http://www.myprotein.com/sports-nutrition/impact-whey-protein/10530943.html
我想检索不同金额的价格,即1公斤和2.5公斤
第一个选项很简单。
val page = Jsoup.connect("http://www.myprotein.com/sports-nutrition/impact-whey-protein/10530943.html").get()
println(page.select("div.media").select("h2.price").text.replaceAll("[a-zA-z\\s]", ""))
获取不同的选项:
for (value <- page.getElementById("opts-7").getElementsByAttribute("value").asScala ) {
println(value.attr("value"))
}
但是我不知道如何继续发布帖子,设置cookie,标题等。我更喜欢Jsoup的速度和解析能力,但是我也在考虑采用简单的方法并使用selenium来选择其他选项并使用jsoup解析源代码。
所以我决定换成Selenium。它通过模拟点击选择了正确的选项,但价格并未更新。如果我避免关闭WebDriver并手动选择2.5 kg,则相应地更新价格
var driver: WebDriver = null
def main(args: Array[String]) {
setupWebDriver()
driver.navigate().to("http://www.myprotein.com/sports-nutrition/impact-whey-protein/10530943.html")
driver.findElement(By.xpath("//*[@id=\"opts-7\"]/option[2]")).click()
val temp = Jsoup.parse(driver.getPageSource)
println(temp.select("div.product-price").text())}
主要方法和WebDriver设置
def setupWebDriver() {
val binaryExe = "\\phantomjs.exe"
val BinaryChrome = "\\chromedriver.exe"
val caps: DesiredCapabilities = new DesiredCapabilities()
caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, System.getProperty("user.dir") + binaryExe)
System.setProperty("phantomjs.binary.path", System.getProperty("user.dir") + binaryExe)
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + BinaryChrome)
caps.setJavascriptEnabled(true)
caps.setBrowserName(BrowserType.GOOGLECHROME)
driver = new ChromeDriver(caps)
driver.manage.timeouts.implicitlyWait(10, TimeUnit.SECONDS)}
任何人都可以告诉我如何以这种方式更新价格吗?