Scrapy是用Python语言编写,通过Twisted异步网络框架提升下载速度,是一个快速、高层次的屏幕抓取和Web抓取框架,常用于数据挖掘、监测和自动化测试等。
一、Scrapy框架介绍
Scrapy内部实现了并发请求、免登录、URL去重等操作,开发者可根据自己的需求去编写部分代码,就能抓取到所需要的数据。Scrapy框架包含的组件有调度器、下载器、Scrapy引擎、项目管道、爬虫以及各中间件等。
Scrapy框架爬取流程:首先从初始URL开始,调度器会将其交给下载器(Downloader),下载器向网络服务器发送请求进行下载,得到的响应后将下载数据交给爬虫,爬虫会对网页进行分析,分析出来的结果有两种:一种是需要进一步抓取的链接,这些链接会被传回调度器,另一种是需要保存的数据,它们会被传送至项目管道,项目管道进一步对数据进行清洗、去重等处理,并存储到文件或数据库中。数据爬取过程中,Scrapy引擎用于控制整个系统的数据处理流程。
Scrapy框架内包含的各组件功能如下:
Scrapy引擎:用来控制整个系统的数据处理流程,并进行事务处理的触发。
调度器中间件:位于Scrapy引擎和调度器之间,主要用于处理Scrapy引擎发送到调度器的请求和响应。
调度器:用来接收引擎发送过来的请求,压入队列完成去重操作,并决定下一个要抓取的网站,在引擎再次请求的时候返回URL。
下载器中间件:位于Scrapy引擎和下载器之间,主要用于处理Scrapy引擎与下载器之间的请求及响应,其中代理IP和用户代理可以在这里设置。
下载器:用于下载网页内容,并将网页响应结果返回给爬虫。
爬虫中间件:位于Scrapy引擎和爬虫之间,主要用于处理爬虫的响应输入和请求输出。
爬虫:用于从特定网页中提取需要的信息,也可以从中提取URL交给调度器,让Scrapy继续爬取下一个页面。
项目管道:负责处理爬虫从网页中抓取的信息,主要的功能为持久化项目、验证项目的有效性、清除不需要的信息,并完成数据存储。
二、爬虫实战
1.项目需求
基于Scrapy框架爬取某网站的新闻标题和内容。
2.分析页面网站
通过网页解析,了解新闻网站不同模块对应的详情页URL均为静态数据。
通过对不同板块的网页进行解析,了解各模块的新闻为动态加载数据,且新闻标题位于“a”标签下。
进一步,分析新闻网页,了解新闻内容位于“p”标签下。
3.项目搭建
第一步:创建项目
Pycharm终端输入
cd框架#进入项目文件夹路径scrapystartprojectwangyi#创建项目,wangyi为项目名cdwangyi#进入项目路径scrapygenspiderspiderName