Scrapy是一种应用框架,实现获取网站数据、提取结构性数据。常用在数据挖掘、信息处理、存储历史数据等。
Scrapy架构
引擎 Scrapy Engine |
中心处理,负责各种中间的数据通讯、传递等 |
调度器 Scheduler |
接受引擎发过来的requests请求,并按照一定方式进行整理排列,引擎需要时交还给引擎 |
下载器 Download |
下载引擎发送的所有requests请求,将响应交还给引擎处理 |
爬虫 Spider |
处理所有响应,分析提取数据,获取Item字段需要的数据,并跟进发送下一步的url |
管道 Item Pipeline |
处理爬虫获得的Item进行数据处理 |
下载中间件 Download Middlewares |
自定义扩展下载功能的组件 |
Spider中间件 Spider Middlewares |
自定义扩展引擎和爬虫中间通信的组件 |
运作流程:
- 爬虫向引擎发送需要处理的url
- 引擎获得url,发送给调度器进行排队
- 调度器将处理好的requests请求发送给引擎
- 引擎将请求发送给下载器进行内容下载,下载成功后交还给引擎;下载失败的话引擎告诉调度器这个请求下载失败,一会再次下载
- 引擎将下载好的内容交给爬虫处理,爬虫处理后得到一个Item数据,如果有跟进的url,则将两个都交给引擎
- 引擎将得到的Item数据交给管道处理,将需要跟进的url交给调度器,重复之前的内容,直到调度器中没有请求,程序结束
创建一个Scrapy工程
首先安装,用命令行窗口进行安装 pip intsall scrapy
输入命令创建一个工程:scrapy startproject crawlerjob(最后的是工程名)
我的创建之后在c盘,移动到pycharm底下打开:

里面有六个文件:
| scrapy.cfg | 项目的配置文件 |
| _init_.py | 将文件夹变成一个python模块 |
| items.py | 项目的目标文件 |
| pipelines.py | 项目的管道文件 |
| middlewares.py | 定义爬虫中间间和下载中间件两个类 |
| settings.py | 项目的设置文件 |
写一个爬虫
首先在items.py里面定义一个Item,用来存储获取得到的相应信息:
import scrapy class CrawlerjobItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() position=scrapy.Field()
再cd到当前文件夹目录下,创建一个 爬虫:
scrapy genspider -t basic spider51job 51job.com
前面都是固定的,最后两个一个是爬虫名,一个是爬取范围,即访问的网站,在工程文件下可以看到新建了一个爬虫文件,爬虫逻辑都会在这个文件里写:
在parse方法中写爬虫逻辑:
def parse(self, response): item=CrawlerjobItem() #实例化一个item item['position']=response.xpath('//p[@class="t"]/span/@title').extract() #执行爬虫,使用xxpath方法获取内容然后存储到iem里 print(item['position'])代码写完在命令行窗口输入指令:scrapy crawl spider51job,执行名为spider51job的爬虫,就能执行爬虫逻辑获取网页信息。
本文含有隐藏内容,请 开通VIP 后查看
