【问题标题】:how to use proxies with scrapy-requests and scrapy如何使用带有scrapy-requests和scrapy的代理
【发布时间】:2021-03-05 08:44:31
【问题描述】:

我希望有人可以帮助我,我正在尝试将 scrapy-requests 包与 scrapy 一起使用,以便我可以呈现整个页面。 (https://pypi.org/project/scrapy-requests/) 我似乎无法将代理传递给它,我明白了

    from scrapy_requests import HtmlRequest

yield HtmlRequest(url=url, callback=self.parse, render=True)

继承scrapy。请求我尝试通过元参数传递代理,就像你会做的那样

yield scrapy.Request(url=url,meta=proxy)

但这没有用。所以我开始弄乱它附带的中间件,并将 spider_open 函数编辑到这个

def spider_opened(self, spider: Spider) -> None:
    """Open HTMLSession when spider starts"""
    s = HTMLSession()
    s.proxies = {'http': 'http://23.236.168.81:1111'}
    self.session = s

如果我将渲染选项设置为 False,它可以工作,但一旦我将其设置为 true,它就会恢复到我的原始 IP 任何帮助表示赞赏。

谢谢

【问题讨论】:

  • 也许应该是s.proxies = {'https': '<your proxy URL>'}?您是否尝试打开 HTTPS 页面?

标签: python web-scraping scrapy scrapy-request


【解决方案1】:

如果有人需要做同样的事情,这就是答案 只会在每个蜘蛛打开/关闭时使用 1 个代理,所以如果你需要循环它,我只会在 while 循环中编写 powershell 脚本 scrapy crawl myspider

 def spider_opened(self, spider: Spider) -> None:
        """Open HTMLSession when spider starts"""

        prox = random.choice(Pr.ROTATING_PROXY_LIST)
        s = HTMLSession(browser_args=[f'--proxy-server={prox}', f'--user-agent{ua.random}'])
        self.session = s

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 1970-01-01
    • 2011-06-10
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2021-11-14
    相关资源
    最近更新 更多