【发布时间】:2016-09-23 11:22:26
【问题描述】:
我需要每周从网站上抓取数据。只有点击页面后数据才可见(调用js函数)。数据加载到一个表中(可以通过 id 找到)。此脚本将在没有浏览器支持的服务器上运行。 这是我的 geb 代码:
@Grab("org.gebish:geb-core:0.13.1")
@Grab("org.seleniumhq.selenium:selenium-firefox-driver:2.52.0")
@Grab("org.seleniumhq.selenium:selenium-support:2.52.0")
@GrabExclude('org.codehaus.groovy:groovy-all')
import geb.Browser
Browser.drive{
// driver.webClient.javaScriptEnabled = true
go "mysite"
js.loadWeekData()
println $("div.data-listing").text()
}
我已经在这个主题上进行了很多搜索,但没有任何东西可以在 js 支持下进行无头抓取。 这是来自 Selenium IDE 的记录:
driver.findElement(By.linkText("Next")).click();
我无法让 phantomJS 与 geb 一起使用。
编辑 1 这是幻影js的错误: java.lang.NoClassDefFoundError: org/openqa/selenium/browserlaunchers/Proxies 我已阅读有关版本问题的信息,但无法解决。
@Grab("org.gebish:geb-core:0.13.1")
@Grab("org.seleniumhq.selenium:selenium-firefox-driver:2.52.0")
@Grab("org.seleniumhq.selenium:selenium-support:2.52.0")
@Grab("com.codeborne:phantomjsdriver:1.3.0")
WebDriver driver = new PhantomJSDriver();
// Load Google.com
driver.get("http://www.google.com");
// Locate the Search field on the Google page
WebElement element = driver.findElement(By.name("q"));
简而言之,我需要在无头模式下执行第一个脚本(如果可能,无需安装 Xvfb)。最好是 groovy 或 java 解决方案。
【问题讨论】:
-
自从我得到解决方案后,有人可以关闭或标记为已回答吗?
标签: javascript selenium web-scraping phantomjs geb