scrapy与全站爬虫

创建crawlscrapy的模版:

>>>scrapy genspider --list

scrapy genspider --list

其中crawl模版就是本次用于编写全站爬虫所用。

创建模版

使用该模版创建爬虫的命令:

>>>scrapy genspider -t crawl XXX(脚本名) XXX(目标网站域名)

于是在spiders下出现量一个脚本:

爬虫脚本

在settings.py中将项目的根目录插入python的环境变量中,方便后面路径的引用等操作。

插入

编写Rule

打开spider下的脚本,填充Rule部分的内容,Rule的作用是用正则表达式匹配对应的URL并进行回调,可以是一个正则表达式字符串或者是一个正则表达式元组:

填充Rules部分

然后在main.py中启动脚本

编写Items

在items.py中构造一个对应的数据类:

items.py

为Item配置数据

打开spider下的脚本,引入item并配置好数据。

配置好数据

selenium加载动态页面

将Selenium集成到scrapy

配置中间键

在middlewares.py中引入selenium,用于处理特定的页面,并返回一个response

配置中间键

别忘了在settings.py中设置一下:

settings.py

优化一下,我们可以把selenium启动浏览器后的状态写到一个类实例的初始化函数里,这样以后就不需要频繁启动浏览器了:

优化

但是这样做后还是有一个小问题,就是浏览器访问页面完成后,spider都finished了,浏览器却没有关闭。基于此,我们进一步优化一下,把浏览器打开的过程直接写到spider里面。然后在middlewares.py中把self.broswer改成spider.broswer。

scrapy-splash加载动态页面:

scrapy自带一个加载动态页面的工具,scrapy-splash。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容