苏苏网赚论坛

 找回密码
 立即注册
查看: 697|回复: 0

如何动态配置爬虫?

[复制链接]
跳转到指定楼层
楼主
发表于 2019-6-27 13:46:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在大部分主流得网站都已经不是静态得html,html和Javascript相结合。
有很多得时候,我们需要从多个网站爬取所需要得数据状况,比如说我们想爬取几个网站得新闻,将所爬取到得新闻储蓄到数据库得同一个表当中。
那么我们是不是要对每个网站都需要去定义一个Spider类?
其实不需要,我们可以通过维护一个规则配置表或者一个规则配置文件来动态增加或修改爬取规则,然后程序代码不需要更改就能实现多个网站爬取。具体操作方法如下:

一、脚本运行Scrapy
可以利用scrapy提供的核心API通过编程方式启动scrapy,代替传统的scrapy crawl启动方式。
Scrapy构建于Twisted异步网络框架基础之上,因此你需要在Twisted reactor里面运行。
首先你可以使用scrapy.crawler.CrawlerProcess这个类来运行你的spider,这个类会为你启动一个Twisted reactor,并能配置你的日志和shutdown处理器。所有的scrapy命令都使用这个类。



另外一个功能更强大的类是
scrapy.crawler.CrawlerRunner
,推荐你使用这个


二、用Selenium爬取动态页面

对于动态加载,开始的时候是看到Selenium+Phantomjs的强大,直接就学的这个。打开网页查看网页源码(注意不是检查元素)会发现要爬取的信息并不在源码里面。也就是说,从网页源码无法通过解析得到数据。Selenium+Phantomjs的强大一方面就在于能将完整的源码抓取到,上代码。



三、用python3动态加载页面爬虫
直接调出开发者工具,复制element的html代码,保存,用正则或BeautifulSoup或xpath提取信息


注意:这里还可以复制Xpath和selector(对应BeautifulSoup中的select方法),这个能让我们无脑对进行单项定位。

四、phantomjs+scrapy
向下滚动加载的网页便是一种很常见的动态网页,要解决这种网页,我们需要采用phantomjs+scrapy的方法。
首先需要安装Phantomjs,简单地说Phantomjs就是一个没有GUI的浏览器,但通过javascript,它可以实现所有我们在网页上的操作。对比起selenium每次都需要调用浏览器,Phantomjs显然更适合嵌入到scrapy框架当中 。

构建动态爬虫
spider函数很简单,这里主要只是为了打印出网页内容而已(破易躺枪)



新建一个JSMiddware





只需要修改settings.py就可以了。

采集需要代理IP,河马动态转发代理IP
你只需设置一次代理,就可以得到随机变化的IP,免去频繁更换代理的麻烦
代理IP提取企鹅:3372==============92==============404

热帖推荐
回复

使用道具 举报

广告合作|最大的网赚客中文交流社区!十年老站!

GMT+8, 2024-4-23 16:00 , Processed in 0.156000 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.1 VIP版

© 2012-2022 苏苏网赚论坛 版权所有 | 10年老品牌

快速回复 返回顶部 返回列表