【问题标题】:Web-scraping: how to choose proxy网页抓取:如何选择代理
【发布时间】:2017-03-14 23:59:22
【问题描述】:

我想编写尽可能可重用的网络爬虫。我会把它写在 Selenium + PhantomJS 上。 PhantomJS 将使用一个 IP 池(代理)。有大量免费代理,for example

我如何在运行时为特定 URL 选择最佳代理?“最好”是指不会被目标资源阻塞的最快代理。

解决方法

我在 Heroku 上部署了我最简单的应用程序。该应用程序提供一些 html 内容。我使用了不同的代理(响应时间 151.252.120.177:8080(参见下面的代码),并注意到它们中的大多数无法在 15 秒超时内解析最简单的 html。其中一些(甚至更慢)在一秒钟内检索到内容。 为什么有些代理无法访问我的内容?他们被 Heroku 列入黑名单了吗?

    DesiredCapabilities caps = new DesiredCapabilities();
    caps.setJavascriptEnabled(true);        
    caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "drivers/phantomjs");

    ArrayList<String> cliArgsCap = new ArrayList<String>();
    cliArgsCap.add("--proxy=151.252.120.177:8080");
    cliArgsCap.add("--proxy-type=socks");
    caps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap);

    WebDriver driver = new PhantomJSDriver(caps);
    driver.get(REMOTE_URL);
    WebDriverWait wait = new WebDriverWait(driver, 15);
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.className("btn-success")));
    element.click();
    driver.quit();

【问题讨论】:

  • 是的,他们很有可能被列入黑名单。关于选择最好的,我想说您可以自己存储每个代理/域的等待时间,然后根据您自己的数据选择最有益的。我真的没有看到其他方式。
  • 也许选择地理上更接近的那个?但是当然,如​​果该代理被禁止,那将毫无用处。另一种选择是使用一些付费系统,例如crawleraproxymesh

标签: java heroku proxy web-scraping phantomjs


【解决方案1】:

如果您只需要刮板结果,您可以使用带有代理支持的免费刮板。试试这个http://datathief.verych.ru/

【讨论】:

  • 它们看起来很可疑,只是来自空网站的 exe 文件。谢谢,但我会自己写
  • 别担心,我写它是为了我的目标,但它变得非常通用。没时间建站 :( 有视频,但怕质量很差youtube.com/watch?v=sz1xzyHdtQg
猜你喜欢
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 2021-10-26
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多