Scrapy:将用户代理更改与 IP 地址更改同步
Scrapy: synchronize user-agent change with ip address change
我正在研究 this guide 使用 Tor 和 Scrapy 的用户代理切换器。它类似于有关该主题的其他指南。 Tor 大约每 10 分钟更改一次 IP 地址。中间件会根据每个请求更改用户代理。
我想将用户代理更改与 IP 地址更改同步。为此,我需要在 Scrapy 发送请求之前执行一些代码。该代码将检查 ip 自上次请求以来是否已更改,如果已更改,则更改用户代理。如果 ip 没有改变,它将使用相同的用户代理。我一直没能找到在执行周期的正确位置调用此代码的方法。
想要进行此更改的原因是,在我正在抓取的网站上,具有不同用户代理的多个请求来自同一 IP 地址是不寻常的。
您必须使用 Downloader Middleware
,专门声明 process_request
方法,这样您就可以在发出实际请求之前处理 Request
对象。
在那里你可以声明一个 user-agents
的字典与每个请求的代理关联,记住你可以为每个请求指定代理 request.meta['proxy'] = "host:port"
我正在研究 this guide 使用 Tor 和 Scrapy 的用户代理切换器。它类似于有关该主题的其他指南。 Tor 大约每 10 分钟更改一次 IP 地址。中间件会根据每个请求更改用户代理。
我想将用户代理更改与 IP 地址更改同步。为此,我需要在 Scrapy 发送请求之前执行一些代码。该代码将检查 ip 自上次请求以来是否已更改,如果已更改,则更改用户代理。如果 ip 没有改变,它将使用相同的用户代理。我一直没能找到在执行周期的正确位置调用此代码的方法。
想要进行此更改的原因是,在我正在抓取的网站上,具有不同用户代理的多个请求来自同一 IP 地址是不寻常的。
您必须使用 Downloader Middleware
,专门声明 process_request
方法,这样您就可以在发出实际请求之前处理 Request
对象。
在那里你可以声明一个 user-agents
的字典与每个请求的代理关联,记住你可以为每个请求指定代理 request.meta['proxy'] = "host:port"