在使用jSoup或其他lib执行JavaScript后解析HTML DOM

时间:2014-02-26 02:55:23

标签: java javascript html dom jsoup

我想用jSoup解析扩展的doodle.com民意调查 对我来说有两个问题。我不知道如何在解析DOM之前执行JavaScript,然后我必须在此之前单击一个按钮以扩展所有日期。

到目前为止我得到了什么:

Response response= Jsoup.connect("http://doodle.com/xyz")
           .ignoreContentType(true)
           .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")  
           .referrer("http://www.google.com")   
           .timeout(12000) 
           .followRedirects(true)
           .execute();

Document doc = response.parse();
System.out.print(doc);

2 个答案:

答案 0 :(得分:1)

为什么不使用Geb?您可以与页面进行交互,然后使用jQuery选择器从您喜欢的dom中获取任何结果。这真的很不错。

import groovy.grape.Grape

@Grab(group="org.gebish", module="geb-core", version="0.9.0-RC-1")
@Grab(group="org.seleniumhq.selenium", module="selenium-firefox-driver", version="2.28.0")

import geb.Browser

def browser = new Browser()
browser.go "http://doodle.com/xyz"
browser.find(".maybefind").find("a", 0).click()
browser.find("a").each({
        element -> println element.text()
    })
browser.quit()

将其另存为.groovy并使用

运行它
groovy yourScript.groovy

答案 1 :(得分:0)

JSoup只是一个HTML解析器/“tidyfier” - 而不是浏览器模拟器。要与HTML页面进行交互(执行javascript,填写表单等),您应该使用HtmlUnitSelenium等工具。