您现在的位置是:主页 > news > 网站建设名词解释与简答题/我要发布信息
网站建设名词解释与简答题/我要发布信息
admin2025/6/29 0:04:53【news】
简介网站建设名词解释与简答题,我要发布信息,网站开发模块化,天津建筑网站建设这个只是个人的一点思考,因为我的提议被否决了,所以只停留在我个人的设计层面,以下的个人设想针对的是scrapy的框架. 众所周知,国内的ip代理池是混淆的,所以不需要考虑自己再混淆一次,二国外的代理池&…
这个只是个人的一点思考,因为我的提议被否决了,所以只停留在我个人的设计层面,以下的个人设想针对的是scrapy的框架.
众所周知,国内的ip代理池是混淆的,所以不需要考虑自己再混淆一次,二国外的代理池,一般是固定ip,这个旧很要命了,如果是高频次的抓取,是特别容易被封禁的,如果想降低频次的话,一是扩大代理池,二是混淆代理,增加复用率。
如何提高复用率呢?
针对scrapy框架,个人有一些设想:
假如我们有80个代理,我们可以用:
random.choice(代理list)
通过每次random不同的代理来迷惑网站,降低proxy访问网站的频次.这是一种简单实用的办法,缺点是不一定有效利用了proxy.
下面说下的我的思路:
1、把代理存在数据库或者redis中(频次高,redis效果更好),我们设立一个queue,来装填这些代理,
2、每次装填前使用random.shuffle打乱顺序,
3、每次爬虫爬取的时候去queue 取,然后在queue的数量不够时,再重复2的操作,或者定时任务装填
相比第一种做法,这种做法:第一实现了proxy的全利用,第二实现了实用的混淆,就是复杂了些,我想要实现高可用的话,也是一种策略.
假如 咱们有多个爬虫,咱们可以用爬虫名字来命名queue,让爬虫取对应名字的queue取proxy(一次启动多个爬虫,可以互不干扰),queue放在rabbitmq中,让爬虫跟mq对接proxy。再然后设置一个定时任务,往queue中装填proxy数据.因为queue是先进先出,所以不会影响.
在scrapy的download middleware,我们可以写一个与mq对接,获取proxy的中间件,就可以实现.
关于为什么要请求mq的来实现代理的queue呢?
众所周知scrapy作为一个异步应用,一般是单线程启动,虽然python中的queue可以实现多线程的通信,在这里的处境却很窘迫,一个scrapy是单线程,第二个这里的queue要应用在middleware中,使用queue怎么实现每个爬虫都有一个单独而全局反应的变量,也是个难题.