gpt4 book ai didi

python - 临时 Scrapy 中的用户代理轮换

转载 作者:行者123 更新时间:2023-12-01 04:28:21 25 4
gpt4 key购买 nike

我正在使用 Scrapy 编写一个crawlspider,并使用下载器中间件为每个请求轮换用户代理。我想知道是否有办法暂时解决这个问题。换句话说,我想知道是否可以告诉蜘蛛每 X 秒更改一次用户代理。我认为,也许使用 DOWNLOAD_DELAY 设置来执行此操作可以解决问题。

最佳答案

您的处理方式可能会有所不同。由于您可以通过 CONCURRENT_REQUESTSDOWNLOAD_DELAY 和其他相关设置控制每秒请求数的抓取速度,因此您可以只计算同一用户将连续发出多少个请求-代理 header 。

沿着这些思路(基于 scrapy-fake-useragent )(未测试):

from fake_useragent import UserAgent

class RotateUserAgentMiddleware(object):
def __init__(self, settings):
# let's make it configurable
self.rotate_user_agent_freq = settings.getint('ROTATE_USER_AGENT_FREQ')

self.ua = UserAgent()

self.request_count = 0
self.current_user_agent = self.ua.random

def process_request(self, request, spider):
if self.request_count >= self.rotate_user_agent_freq:
self.current_user_agent = self.ua.random
self.request_count = 0
else:
self.request_count += 1

request.headers.setdefault('User-Agent', self.current_user_agent)

这可能不是特别准确,因为也可能存在重试和其他原因,理论上可能会搞砸计数 - 请测试一下。

关于python - 临时 Scrapy 中的用户代理轮换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com