scrapy与全站爬虫

作者: 眼君 | 来源:发表于2017-08-30 08:43 被阅读238次

创建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。

相关文章

网友评论

  • 代码咖啡:推荐指令代码放到代码块中哦:
    ```
    code ...
    ```

本文标题:scrapy与全站爬虫

本文链接:https://www.haomeiwen.com/subject/fjlrhxtx.html