这篇文章主要介绍了Python scrapy增量爬取实例及实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
开始接触爬虫的时候还是初学Python的那会,用的还是request、bs4、pandas,再后面接触scrapy做个一两个爬虫,觉得还是框架好,可惜都没有记录都忘记了,现在做推荐系统需要爬取一定的文章,所以又把scrapy捡起来。趁着这次机会做一个记录。
目录如下:
环境
本地窗口调试命令
工程目录
xpath选择器
一个简单的增量爬虫示例
配置介绍
环境
自己的环境下安装scrapy肯定用anaconda(再次强调anaconda的优越性
本地窗口调试与运行
开发的时候可以利用scrapy自带的调试功能进行模拟请求,这样request、response都会与后面代码保持一样。
# 测试请求某网站
scrapy shell URL
# 设置请求头
scrapy shell -s USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0" URL
# 指定爬虫内容输出文件格式(json、csv等
scrapy crawl SPIDER_NAME -o FILE_NAME.csv
# 创建爬虫工程
scrapy startproject articles # 在当前目录创建一个scrapy工程
新工程结构介绍
# spiders文件下存放所有爬虫,item.py格式化数据输出
# middlewares.py 设置请求细节(请求头之类的),pipelines.py为数据输出的管道,每一个封装好的item都会经过这里
# settings.py 对工程进行全局设置(存放配置
├── articles
│ ├── articles
│ │ ├── __init__.py
│ │ ├── items.py
│ │ ├── middlewares.py
│ │ ├── pipelines.py
│ │ ├── settings.py
│ │ └── spiders
│ │ ├── healthy_living.py
│ │ ├── __init__.py
│ │ └── people_health.py
│ └── scrapy.cfg
├── README.en.md
└── README.md
页面解析神器——Xpath选择器
scrapy自带xpath选择器,很方便,简单介绍一些常用的
# 全站爬取神器--LinkExtractor,可以自动获取该标签下的所有url跟text(因为网站结构大都一个套路
from scrapy.linkextractors import LinkExtractor
le = LinkExtractor(restrict_xpaths="//ul[@class='nav2_UL_1 clearFix']")# 返回一个迭代器,通过循环(for i in le),可获取url(i.url) (i.text)
# 获取属性class为所有aa的div标签内容中的内容
response.xpath("//div[@class='aa']/text()").extract() # '//'代表获取所有,'/'代表获取第一个,类似的可以找属性为ul的其它标签
# 获取内容包含“下一页”的所有a标签中包含的链接(提取下一页链接神器
response.xpath("//a[contains(text(),'下一页')]/@href").extract()
一个简单的增量爬取示例
这里增量爬取的思想很简单&#