开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第30天,点击查看活动详情
scrapy
简介
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
安装
这里注意要使用国内的源,不指定的话经常会超时中断。我这里使用的是Pycharm来安装的,他会自动帮我们把其它相关的依赖都安装上,如果直接使用命令行来安装可能会报一些依赖错误,那就需要根据提示去安装完前置依赖再来安装该库。
pip install scrapy -i https://pypi.douban.com/simple
基本使用
1. 创建项目
安装完scrapy之后,在命令行输入startproject加上项目名称即可自动生成一个项目。
scrapy startproject 项目名称
2. 项目组成
├ spiders
├---- __init__.py
├---- 自定义的爬虫文件.py =>> 自己编写实现爬虫核心功能的文件
├ __init__.py
├ items.py =>> 定义数据结构的地方,继承自 scrapy.Item类
├ middlewares.py =>> 中间件 代理
├ pipelines.py =>> 管道文件,用于处理下载数据的后续处理,默认300,数值越小优先级越高(1-1000)
└ settings.py =>> 配置文件,robots协议,User-Agent等定义
3. 创建爬虫文件
上面生成完一个项目之后,有一个自定义爬虫文件由我们自己实现,具体的创建步骤如下:
- 进入到
spiders目录
cd ./文件路径/文件路径/spiders
- 生成文件
scrapy genspider 爬虫名字 网站的域名(注意不要携带http等协议头)
- 文件组成
import scrapy
# 继承scrapy.Spider类
class BaiduSpider(scrapy.Spider):
# 运行爬虫文件时使用的名字
name = 'baidu'
# 爬虫允许的域名,不在此域名下的连接会被过滤
allowed_domains = ['www.baidu.com']
# 申明起始地址
start_urls = ['http://www.baidu.com/']
# response:解析数据的回调函数
# response.text 响应的字符串
# response.body 响应的二进制文件
def parse(self, response):
pass
4. 运行
项目搭建好了,爬虫文件也生成了,那么该来尝试下运行效果了
scrapy crawl 爬虫名字
第一次运行不成功,并没有走到我们自定义的爬虫文件中,还提示了一个带robots.txt的网址,这个是一个君子协议,限制爬取范围的。
我们可以在settings.py文件中将该协议的控制开关关闭
# Obey robots.txt rules
ROBOTSTXT_OBEY = False
关闭之后可以看到能正常的执行到我们自定义的逻辑部分了。