【问题标题】:Making Splash, Scrapy and Scrapoxy work together让 Splash、Scrapy 和 Scrapoxy 协同工作
【发布时间】:2017-02-03 09:35:42
【问题描述】:

我正在使用 Scrapy 编写网络抓取工具。我需要访问的一些站点需要我与它们交互,所以我使用 Splash 发出请求,这允许我这样做。这目前工作得很好。

为了防止我的爬虫被阻止,我希望请求通过一组代理服务器,所以我为此使用了 Scrapoxy。

我现在遇到的问题是,据我所知,请求按以下方式流动:-

Scrapy -> Scrapoxy -> Splash -> 目标网站

而不是:-

Scrapy -> Splash -> Scrapoxy -> 目标网站

可以解决这个问题吗?
如果没有,是否可以使用任何其他可以解决此问题的无头浏览器或代理 IP 旋转器?

【问题讨论】:

标签: web-scraping scrapy scrapy-splash splash-js-render


【解决方案1】:

你可以使用这个脚本:

function main(splash)
    local host = "localhost"
    local port = 8888

    splash:on_request(function (request)
       request:set_proxy{host, port}
    end)

    splash:go(splash.args.url)
    return splash:png()
end

【讨论】:

  • 我目前正在使用基本相似的东西。有什么方法可以使中间件与此设置一起使用?我对 Scrapoxy Blacklist 中间件很感兴趣。此外,您还建立了一些惊人的东西。感谢您的努力。
  • 你好 John,我相信你可以在 LUA 中做到这一点。 Splash 有一个 on_response 事件(请参阅splash.readthedocs.io/en/stable/…)并且您可以使用 LUA 发出 HTTP 请求,以便在 Scrapoxy 上发出 HTTP POST 请求。如果您找到如何做到这一点,我会很有趣。我会将它添加到 Scrapoxy 文档中!法比恩。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 2011-09-25
相关资源
最近更新 更多