Scrapy
Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。
一、安装scrapy
安装Twisted
-
Twisted:为 Python 提供的基于事件驱动的网络引擎包。
-
在下面网址安装Twisted
url:https://www.lfd.uci.edu/~gohlke/pythonlibs/
安装scrapy
-
cmd输入
pip install scrapy
-
安装完毕,cmd里输入scrapy出现安装成功。
二、了解scrapy
Scrapy的组件
-
引擎,用来处理整个系统的数据流处理,触发事务。
-
调度器,用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。
-
下载器,用于下载网页内容,并将网页内容返回给蜘蛛。
-
蜘蛛,蜘蛛是主要干活的,用它来制订特定域名或网页的解析规则。
-
项目管道,负责处理有蜘蛛从网页中抽取的项目,主要任务是清晰、验证和存储数据。当页面被蜘蛛解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
-
下载器中间件,位于Scrapy引擎和下载器之间的钩子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。
-
蜘蛛中间件,介于Scrapy引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入和请求输出。
-
调度中间件,介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。
其处理流程为:
-
引擎打开一个域名时,蜘蛛处理这个域名,并让蜘蛛获取第一个爬取的URL。
-
引擎从蜘蛛那获取第一个需要爬取的URL,然后作为请求在调度中进行调度。
-
引擎从调度那获取接下来进行爬取的页面。
-
调度将下一个爬取的URL返回给引擎,引擎将他们通过下载中间件发送到下载器。
-
当网页被下载器下载完成以后,响应内容通过下载中间件被发送到引擎。
-
引擎收到下载器的响应并将它通过蜘蛛中间件发送到蜘蛛进行处理。
-
蜘蛛处理响应并返回爬取到的项目,然后给引擎发送新的请求。
-
引擎将抓取到的项目项目管道,并向调度发送请求。
-
系统重复第二部后面的操作,直到调度中没有请求。
三、项目分析
爬取天气网城市的信息
url : https://www.aqistudy.cn/historydata/
加Python学习qq裙:10667510 送全套零基础学习资料教程
爬取主要的信息: 热门城市每一天的空气质量信息
点击月份还有爬取每天的空气质量信息
四、新建项目
-
新建文件夹命令为天气网爬虫
-
cd到根目录,打开cmd,运行
scrapy startproject weather_spider
-
创建spider
cd到根目录,运行 scrapy genspider weather www.aqistudy.cn/historydata
这里的weather是spider的名字
-
创建的路径如下:
五、代码编写
对于scrapy,第一步,必须编写item.py,明确爬取的对象
-
item.py
import scrapy
class WeatherSpiderItem (scrapy.Item) :
# define the fields for your item here like:
# name = scrapy.Field()
"""日期 AQI 质量等级 PM2.5 PM10 SO2 CO NO2 O3_8h"""
city =