Scrapy爬虫开发实验

什么是Scrapy?

Scrapy是一个基于Python的强大的开源网络爬虫框架,用于从网站上抓取信息。它提供了广泛的功能,使得爬取和分析数据变得相对容易。Scrapy的特点包括:

  • 强大的数据提取工具,支持XPath和CSS选择器。
  • 简化的HTTP请求和响应处理。
  • 可配置的下载中间件,用于处理不同类型的请求。
  • 数据存储支持,包括JSON、CSV、XML等。
  • 并发请求管理,提高效率。

创建Scrapy项目

要使用Scrapy来爬取网站,首先需要创建一个Scrapy项目。下面是创建一个名为douban_top250的Scrapy项目的步骤:

1.打开终端,导航到您想要创建项目的目录,并运行以下命令

scrapy startproject douban_top250

2.进入项目目录:

cd douban_top250

3.创建一个用于爬取电影信息的Spider

scrapy genspider douban_movie douban.com

现在,项目的基本结构已经创建,包括爬虫(Spider)模板文件。

编写Scrapy Spider

Spider是Scrapy项目中负责定义如何抓取信息的部分。需要编辑Spider文件,以指定要爬取的URL、如何处理响应和如何提取数据。

import scrapy
from douban_top250.items import DoubanTop250Itemclass DoubanMovieSpider(scrapy.Spider):name = 'douban_movie'  # Spider的名称allowed_domains = ['douban.com']  # 允许爬取的域名start_urls = ['https://movie.douban.com/top250']  # 起始URLdef parse(self, response):for movie in response.css('ol.grid_view li'):item = DoubanTop250Item()  # 创建一个DoubanTop250Item对象用于存储数据item['rank'] = movie.css('em::text').get()  # 提取电影排名item['title'] = movie.css('.title::text').get()  # 提取电影标题item['rating'] = movie.css('.rating_num::text').get()  # 提取电影评分item['link'] = movie.css('a::attr(href)').get()  # 提取电影链接yield item  # 返回Item以供后续处理next_page = response.css('.next a::attr(href)').get()  # 提取下一页的链接if next_page is not None:yield response.follow(next_page, self.parse)  # 继续爬取下一页

创建Item类

import scrapyclass DoubanTop250Item(scrapy.Item):rank = scrapy.Field()title = scrapy.Field()rating = scrapy.Field()link = scrapy.Field()

配置数据存储

FEEDS = {'douban_top250.json': {'format': 'json','encoding': 'utf-8',},
}

运行Scrapy爬虫

一旦编写好Spider和Item类,并配置好数据存储选项,就可以运行Scrapy爬虫来抓取豆瓣Top 250电影数据了。运行以下命令:

scrapy crawl douban_movie
源码已上传到Github:[github.com/SteamPunkMa…]

转载大佬的文章,仅供学习使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/770830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vmware虚拟机下ubuntu扩大磁盘容量

1、扩容: 可以直接在ubuntu setting界面里直接扩容,也可通过vmware命令,如下: vmware提供一个命令行工具,vmware-vdiskmanager.exe,位于vmware的安装目录下,比如 C:/Program Files/VMware/VMwar…

http模块 获取http请求报文中的路径 与 查询字符串

虽然request.url已包含属性和查询字符串,但使用不便,若只需其中一个不好提取,于是用到了如下路径和字符串的单独查询方法: 一、获取路径 例如:我在启动谷歌端口时输入http://127.0.0.1:9000 后接了 "/search?k…

编译安装飞桨fastdeploy@FreeBSD(失败)

FastDeploy是一款全场景、易用灵活、极致高效的AI推理部署工具, 支持云边端部署。提供超过 🔥160 Text,Vision, Speech和跨模态模型📦开箱即用的部署体验,并实现🔚端到端的推理性能优化。包括 物…

02 React 组件使用

import React, { useState } from react;// 定义一个简单的函数式组件 function Counter() {// 使用 useState hook 来创建一个状态变量 count,并提供修改该状态的函数 setCountconst [count, setCount] useState(0);// 在点击按钮时增加计数器的值const increment…

Gemma开源AI指南

近几个月来,谷歌推出了 Gemini 模型,在人工智能领域掀起了波澜。 现在,谷歌推出了 Gemma,再次引领创新潮流,这是向开源人工智能世界的一次变革性飞跃。 与前代产品不同,Gemma 是一款轻量级、小型模型&…

1升级powershell后才能安装WSL2--最后安装linux--Ubuntu 22.04.3 LTS

视频 https://www.bilibili.com/video/BV1uH4y1W7UX特殊开启–Hyper-V虚拟机 把一下代码保存到【a.bat】的执行文件中,进行Hyper-V虚拟机的安装开启【Windows 批处理文件 (.bat)】 pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mu…

鸿蒙Harmony跨模块交互

1. 模块分类介绍 鸿蒙系统的模块一共分为四种,包括HAP两种和共享包两种 HAP(Harmony Ability Package) Entry:项目的入口模块,每个项目都有且只有一个。feature:项目的功能模块,内部模式和En…

(已解决)vue3使用富文本出现样式乱码

我在copy代码到项目里面时候发现我的富文本乱码了 找了一圈不知道是哪里vue3不适配还是怎么,后来发现main.js还需要引入 import VueQuillEditor from vue-quill-editor // require styles 引入样式 import quill/dist/quill.core.css import quill/dist/quill.snow…

# 16 React 使用自定义Hook实现网络请求

自定义Hook可以帮助你在React应用中重用一些逻辑。以下是如何使用自定义Hook实现网络请求: import { useState, useEffect } from react; import axios from axios;const useApi (url) > {const [data, setData] useState([]);const [loading, setLoading] u…

YOLOv9代码解读[01] readme解读

文章目录 YOLOv9COCO数据集上指标:环境安装训练验证重参数化 Re-parameterization推断相关链接 YOLOv9 paper: YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information github: https://github.com/WongKinYiu/yolov9 COCO数据集上指…

网络安全笔记-day8,DHCP部署

DHCP部署与安全 全称(Dynamic Host Configura Protocol)动态主机配置协议 DHCP原理 DHCP协议_科来测试dhcp网络包-CSDN博客🔍 注意的是利用广播地址发送包 ACK(确认) 如果DHCP服务器损坏,则在87.5%时…

Open WebUI大模型对话平台-适配Ollama

什么是Open WebUI Open WebUI是一种可扩展、功能丰富、用户友好的大模型对话平台,旨在完全离线运行。它支持各种LLM运行程序,包括与Ollama和Openai兼容的API。 功能 直观的界面:我们的聊天界面灵感来自ChatGPT,确保了用户友好的体验。响应…

线性代数 - 应该学啥 以及哪些可以交给计算机

AI很热,所以小伙伴们不免要温故知新旧时噩梦 - 线代。 (十几年前,还有一个逼着大家梦回课堂的风口,图形学。) 这个真的不是什么美好的回忆,且不说老师的口音,也不说教材的云山雾绕,单…

【考研数学二】线性代数重点笔记

目录 第一章 行列式 1.1 行列式的几何意义 1.2 什么是线性相关,线性无关 1.3 行列式几何意义 1.4 行列式求和 1.5 行列式其他性质 1.6 余子式 1.7 对角线行列式 1.8 分块行列式 1.9 范德蒙德行列式 1.10 爪形行列式的计算 第二章 矩阵 2.1 初识矩阵 2…

设置NPM镜像命令

设置NPM镜像命令 NPM 查询当前镜像 npm get registry 设置为淘宝镜像 npm config set registry https://registry.npm.taobao.org/ 设置为官方镜像 npm config set registry https://registry.npmjs.org/ YARN 查询当前镜像 yarn config get registry 设置为淘宝镜像…

查看VMWare ESXi 6.5/6.7服务器上 GPU直通的状态

VMWare ESXi 6.5/6.7服务器状态 查看配置参数

生物信息学 GO、KEGG

文章目录 北大基因本体论分子通路KEGGGO注释分子通路鉴定 关于同源 相似性 b站链接:北大课程 概述了当前生物信息学领域中几个重要的概念和工具,介绍基因本体论(Gene Ontology, GO)、分子通路知识库KEGG(Kyoto Encyclo…

纯前端调用本机原生Office实现Web在线编辑Word/Excel/PPT,支持私有化部署

在日常协同办公过程中,一份文件可能需要多次重复修改才能确定,如果你发送给多个人修改后再汇总,这样既效率低又容易出错,这就用到网页版协同办公软件了,不仅方便文件流转还保证不会出错。 但是目前一些在线协同Office…

go的for循环应该这么用

目录 目录 一:介绍 1: for流程控制 2:for-range流程控制 二:实例展示 1://按照一定次数循环 2://无限循环 3: //循环遍历整数、各种容器和通道 4:遍历通道 5://指针数组循环 6&…

sql2008工作文档2

sql2008工作文档2 mainCSqlServer.hCSqlServer.cpp main #pragma warning(disable : 4996) #include "CSqlServer.h" #include <string> #include "resource.h" #include <commdlg.h> #pragma comment(lib, "Comdlg32.lib") using …