Scala Jsoup post,选择不同的选项

Scala Jsoup post,选择不同的选项,scala,selenium,jsoup,Scala,Selenium,Jsoup,我想检索不同数量的价格,即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 (

我想检索不同数量的价格,即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"))
}
这里有main方法和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)}

有谁能告诉我如何通过这种方式更新价格吗?

在这种情况下,当您从下拉列表中选择某个内容时,价格似乎是由JavaScript计算的。Jsoup不能使用JavaScript,因此您可能需要了解网站如何获取这些值。设置cookies、标题等非常简单。感谢您的回复,不过这是一个表单提交。如果数量更改为2.5kg,您将获得一篇包含以下内容的帖子:selected=3&variation1=5&option1=20619&variation2=6&option2=2407&variation3=7&option3=5913,因此我认为我可以通过一篇简单的帖子获得它们,然后您必须使用Jsoup进行类似的帖子并以某种方式解析结果。是的,但我不知道如何开始。您必须这样做首先找出您真正需要下载的内容,以及从何处下载。大多数web浏览器都有开发控制台,您可以在其中查看正在发送的网络请求。试着使用它,看看当你点击按钮时会发生什么,然后试着用jsoup来模拟它。在本例中,请求似乎是通过ajax完成的,当单击按钮时,脚本将下载价格信息,无需发布。
   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)}