我想尽可能使用Web scraper编写可重用的文件。我会把它写在Selenium + PhantomJS上。 PhantomJS将使用IP池(代理)。有一大堆免费代理,for example。
我如何在运行时选择特定网址的最佳代理?我认为最快的是一个不会被目标资源阻止的代理。
我在Heroku上部署了我最简单的应用程序。该应用程序提供一些HTML内容。我使用了不同的代理(响应时间<300毫秒)而不是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();