Scrapy的安装很简单,官方文档也有详细的说明 http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/install.html 。这里不详细说明了。
1. 定义初始爬取的url
2. 定义爬取的行为,是否跟进链接
3. 从网页中提取结构化数据
所谓的跟进链接,其实就是自动爬取该页的所有链接,然后顺着对应的链接延伸开来不断爬取,这样只需要提供一个网站首页,理论上就可以实现网站全部页面的爬取,实现点到面的功能。
如果自己来开发,不仅需要在算法层面,考虑是使用深度优先还是广度优先,还需要处理好提取的url的限制条件等细节工作。在scrapy中,开发过程被大大简化了,我们只需要定义以下几个关键部分的代码,就可以实现翻页效果。
核心思想是在parse方法中,返回新的Requests请求,代码如下
import scrapy from hello_world.items import HelloWorldItem class MirSpider(scrapy.Spider): name = "MirSpider" start_urls = ["http://mirtarbase.cuhk.edu.cn/php/search.php?opt=species&org=bta&sort=id&order=asc&page=1"] def parse(self, response): domain = 'http://mirtarbase.cuhk.edu.cn' for row in response.xpath('//table/tr'): item = HelloWorldItem() res = [] for col in (row.xpath('td/text()')): res.append(col.extract()) if res[0] != 'Bos taurus': continue item['species'] = res[0] item['miRNA'] = res[2] item['target'] = res[3] item['total'] = res[4] item['papers'] = res[5] yield item for url in response.xpath('//a/@href').extract(): if 'page' in url: url = domain + url yield scrapy.Request(url, callback = self.parse, dont_filter = False)
关键代码是最后几行的for循环,在start_urls中,我们只提供了一个初识的url, 在parse方法中,除了常规的返回结构性数据item外,我们还返回了新的requests请求,首先提取页面上所有的url, 并对url的链接进行了限制,对需要爬取的url链接以Request的方法进行返回,注意dont_filter的设置,当设置为False时,会调用scrapy默认的url去重机制,这样不会重复下载。
对于下载的item, 有些会出现重复的现象,此时可以在pipelines.py中,对item进行操作,实现item去重的代码如下
from itemadapter import ItemAdapter class HelloWorldPipeline: def __init__(self): self.link_set = set() def process_item(self, item, spider): link = item['miRNA'] + item['target'] if link in self.link_set: raise DropItem(item) self.link_set.add(link) return item
在process_item方法中,通过一个set对象来达到去重的效果。需要注意,默认pipelines是没有开启的,编写完代码之后,需要在settings.py中进行配置,开启对应的pipeline, 内容如下
ITEM_PIPELINES = { 'hello_world.pipelines.HelloWorldPipeline': 300, }
对于标准的多页表格数据,采用上述的代码可以轻松实现翻页效果,非常的方便。
到此这篇关于scrapy实践之翻页爬取的实现的文章就介绍到这了,更多相关scrapy 翻页爬取内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
本文向大家介绍Python下使用Scrapy爬取网页内容的实例,包括了Python下使用Scrapy爬取网页内容的实例的使用技巧和注意事项,需要的朋友参考一下 上周用了一周的时间学习了Python和Scrapy,实现了从0到1完整的网页爬虫实现。研究的时候很痛苦,但是很享受,做技术的嘛。 首先,安装Python,坑太多了,一个个爬。由于我是windows环境,没钱买mac, 在安装的时候遇到各种各
本文向大家介绍Python Scrapy多页数据爬取实现过程解析,包括了Python Scrapy多页数据爬取实现过程解析的使用技巧和注意事项,需要的朋友参考一下 1.先指定通用模板 url = 'https://www.qiushibaike.com/text/page/%d/'#通用的url模板 pageNum = 1 2.对parse方法递归处理 parse第一次调用表示的是用来解析第一页对
本文向大家介绍实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250,包括了实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250的使用技巧和注意事项,需要的朋友参考一下 安装部署Scrapy 在安装Scrapy前首先需要确定的是已经安装好了Python(目前Scrapy支持Python2.5,Python2.6和Python2.7)。官方文档中介绍了三种方法进行安装,我采用的
本文向大家介绍python 爬取马蜂窝景点翻页文字评论的实现,包括了python 爬取马蜂窝景点翻页文字评论的实现的使用技巧和注意事项,需要的朋友参考一下 使用Chrome、python3.7、requests库和VSCode进行爬取马蜂窝黄鹤楼的文字评论(http://www.mafengwo.cn/poi/5426285.html)。 首先,我们复制一段评论,查看网页源代码,按Ctrl+F查找
任务:爬取腾讯网中关于指定条件的所有社会招聘信息,搜索条件为北京地区,Python关键字的就业岗位,并将信息存储到MySql数据库中。 网址:https://hr.tencent.com/position.php?keywords=python&lid=2156 实现思路:首先爬取每页的招聘信息列表,再爬取对应的招聘详情信息 ① 创建项目 在命令行编写下面命令,创建项目tencent scrapy
主要内容:导入所需模块,拼接URL地址,向URL发送请求,保存为本地文件,函数式编程修改程序本节讲解第一个 Python 爬虫实战案例:抓取您想要的网页,并将其保存至本地计算机。 首先我们对要编写的爬虫程序进行简单地分析,该程序可分为以下三个部分: 拼接 url 地址 发送请求 将照片保存至本地 明确逻辑后,我们就可以正式编写爬虫程序了。 导入所需模块 本节内容使用 urllib 库来编写爬虫,下面导入程序所用模块: 拼接URL地址 定义 URL 变量,拼接 url 地址。代码如下所示: