Jsoup帖子,选择不同的选项

时间:2015-04-03 10:47:35

标签: scala selenium jsoup

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)}

任何人都可以告诉我如何以这种方式更新价格吗?

0 个答案:

没有答案