创建crawlscrapy的模版:
>>>scrapy genspider --list
其中crawl模版就是本次用于编写全站爬虫所用。
使用该模版创建爬虫的命令:
>>>scrapy genspider -t crawl XXX(脚本名) XXX(目标网站域名)
于是在spiders下出现量一个脚本:
在settings.py中将项目的根目录插入python的环境变量中,方便后面路径的引用等操作。
编写Rule
打开spider下的脚本,填充Rule部分的内容,Rule的作用是用正则表达式匹配对应的URL并进行回调,可以是一个正则表达式字符串或者是一个正则表达式元组:
然后在main.py中启动脚本
编写Items
在items.py中构造一个对应的数据类:
为Item配置数据
打开spider下的脚本,引入item并配置好数据。
selenium加载动态页面
将Selenium集成到scrapy
配置中间键
在middlewares.py中引入selenium,用于处理特定的页面,并返回一个response
别忘了在settings.py中设置一下:
优化一下,我们可以把selenium启动浏览器后的状态写到一个类实例的初始化函数里,这样以后就不需要频繁启动浏览器了:
但是这样做后还是有一个小问题,就是浏览器访问页面完成后,spider都finished了,浏览器却没有关闭。基于此,我们进一步优化一下,把浏览器打开的过程直接写到spider里面。然后在middlewares.py中把self.broswer改成spider.broswer。
scrapy-splash加载动态页面:
scrapy自带一个加载动态页面的工具,scrapy-splash。