gpt4 book ai didi

python - 如何使用 Scrapy 获取用于项目中每个请求的代理?

转载 作者:太空宇宙 更新时间:2023-11-04 04:14:57 25 4
gpt4 key购买 nike

我正在使用 DOWNLOADER_MIDDLEWARES 通过 scrapy.Spider 旋转代理,我想得到一个项目,即 item['proxy_used'] ,用于每个请求的代理。

我想可以通过“统计收集器”获取代理,但我是 Python 和 Scrapy 的新手,直到现在我还没有找到解决方案。

import scrapy
from tutorial.items import QuotesItem

class QuotesSpider(scrapy.Spider):
name = "quotes"
allowed_domains = ["quotes.toscrape.com"]
start_urls = [
'http://quotes.toscrape.com/',
]

def parse_quotes(self, response):
for sel in response.css('div.quote'):
item = QuotesItem()
item['text'] = sel.css('span.text::text').get()
item['author'] = sel.css('small.author::text').get()
item['tags'] = sel.css('div.tags a.tag::text').getall()
item['quotelink'] = sel.css('small.author ~ a[href*="goodreads.com"]::attr(href)').get()

item['proxy_used'] = ??? <-- PROXY USED BY REQUEST - "HOW TO???"
yield item

# follow pagination links @shortcut

for a in response.css('li.next a'):
yield response.follow(a, callback = self.parse_quotes)

最佳答案

您可以使用响应对象来访问所使用的代理。如下图

response.meta.get("proxy")

也在您的代码中进行了更新。

import scrapy
from tutorial.items import QuotesItem

class QuotesSpider(scrapy.Spider):
name = "quotes"
allowed_domains = ["quotes.toscrape.com"]
start_urls = [
'http://quotes.toscrape.com/',
]

def parse_quotes(self, response):
for sel in response.css('div.quote'):
item = QuotesItem()
item['text'] = sel.css('span.text::text').get()
item['author'] = sel.css('small.author::text').get()
item['tags'] = sel.css('div.tags a.tag::text').getall()
item['quotelink'] = sel.css('small.author ~ a[href*="goodreads.com"]::attr(href)').get()

item['proxy_used'] = response.meta.get("proxy")
yield item

# follow pagination links @shortcut

for a in response.css('li.next a'):
yield response.follow(a, callback = self.parse_quotes)

关于python - 如何使用 Scrapy 获取用于项目中每个请求的代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55628503/

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