你好,欢迎来到二哥爬虫频道。 这次二哥打算再给大家带三天的Scrapy教程。 我记得三联哦~
另一方面,Scrapy Scrapy是为了获得网站的数据并提供结构性的数据而制作的APP框架,在使用Scrapy的情况下,我们可以用较少的代码实现迅速的捕获。
Scrapy爬网流程Scrapy的爬网流程图如下:
Scrapy的三个重要内置对象
请求对象响应对象item数据对象流程图解释
引擎(负责整个Scrapy Engine )系统中数据和信号的传递的)核心)调度程序)实现存储来自引擎的requests请求的队列,下载网页内容,下载网页内容传递给引擎管道(Pipeline )处理来自引擎的数据并进行数据持久化。)例如: (将数据存储在表/数据库中)中间件)降级
爬虫——URL(Requests ) ——中间件3354引擎——调度程序支持图(中间的绿色直线):Spiders通过ScrapyEngine发送请求requests
调度程序——请求——引擎——下载中间件——对应图中(右上绿色线):Scheduler处理后经过ScrapyEngine,下载中间件
下载程序——Reponses——下载中间件——引擎——爬虫中间件——爬虫对应图中(右下角的绿色线) :下载程序向互联网发送请求,接收Reponses
爬行动物——Reponses——引擎——管道(保存的数据) Spiders处理返回的Reponses,提取数据并通过ScrapyEngine传递给ItemPipeline进行数据保存
如果出现新的URL请求,则重复执行1234的处理,知道没有请求。 二、使用Scrapy编写Scrapy项目安装模块。 在pip install Scrapy中创建scrapy项目。 scrapy startproject文件夹名称的制作完成后,生成如下图所示的文件目录。
scrapy.cfg :项目设置文件items.py :项目目标文件pipelines.py :项目管道文件settings.py :项目设置文件spiders :爬行器步骤如下。
在创建的文件夹下运行CD:scrapy gen spider爬行动物名称的爬网域名称示例:
cd Sp_1
scrapygenspidercars _ data 12365 auto.com
执行完成后,爬虫文件将显示在spiders文件夹下。 文件中的格式如下。
写爬行动物这样我们就准备好了。 现在可以开始整治爬行动物了。
完善代码(这里列举最简单的小例子) )。
importscrapyclasscarsdataspider (scrapy.spider ) : name=' cars _ data ' allowed _ domains=[ ' 12365 auto.com ' ] response (: name _ car=response.XPath ) )./div(@class=(in_cxsx_b ' )1)/div ) @class='in_ )=name_car.extract () yield item在执行parse时可以直接使用scrapy的response对象执行Xpath。
请注意,response.xpath方法的返回值类型类似于list,其中包含一个selector对象。 操作与列表相同,但获取结果时有多种附加方法。
extract () :返回包含字符串的列表
extract_first () :返回列表中的第一个字符串,列表为空且不返回None
代码最后必须使用yield函数使整个函数成为生成器
此时尝试爬网数据,然后在Terminal中执行以下命令:
scrapy crawl name注意: name是您创建的爬行动物的名称,即爬行动物文件name=' '的内容
如果看到未报告错误的长字符串的输出,将证明运行成功。
保存数据时主要使用pipeline进行。
打开pipeline,找到与以下内容类似的代码并取消注释: 初始位置为65行左右。
item _ pipelines={ ' sp _1. pipelines.SP1 pipeline ' :300,}运行最终,您可以通过在terminal中运行以下脚本将文件另存为Json
scrapy crawl dmoz -o items.json