我想使用HtmlUnit獲取facebook帖子的xpath。您可以參考這兩個問題我們就可以得到我想要做更多的想法:使用HtmlUnit獲取Facebook頁面帖子的XPath
爲了模仿我做什麼,你可以按照Q-1。 HTML代碼(facebook頁面)的pastebin鏈接是http://pastebin.com/MfXsYSJQ。
或者只是你可以去https://www.facebook.com/bhramakarserver。 我只想獲得包含帖子文本的span的xpath:「嗨!這是此頁面的第一篇文章。」 我試過是這樣的:
public class ForStackOverflow {
public static void main(String[] args) throws IOException {
WebClient client=new WebClient(BrowserVersion.FIREFOX_17);
client.getOptions().setJavaScriptEnabled(true);
client.getOptions().setRedirectEnabled(true);
client.getOptions().setThrowExceptionOnScriptError(true);
client.getOptions().setCssEnabled(true);
client.getOptions().setUseInsecureSSL(true);
client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.setAjaxController(new NicelyResynchronizingAjaxController());
HtmlPage page1=client.getPage("https://www.facebook.com/bhramakarserver");
System.out.println(page1.asXml());
//getting the xpath of span of class="userContent"
HtmlInput input=(HtmlInput)page1.getByXPath("/html/body//input[@type='submit']").get(0);
System.out.println(input.asXml());
//This line gives error as the xpath evaluates to null
HtmlSpan span=(HtmlSpan)page1.getByXPath("/html/body//span[@class='userContent']").get(0);
}
}
,這似乎是在第1頁有靜態html的問題。在此,span元素:
<span data-ft="{"tn":"K"}" class="userContent">Hi! this is the first post of this page.</span>
是動態生成的。因此,它看起來像在page1的html中註釋,但通過檢查元素進行檢查時,它顯示爲正常。因此,它的動態uncommented.Is沒有辦法,我可以讓page1的html在所有的動態內容已被加載後處於狀態,以便我可以正確地獲得xpath?可以使用硒驅動程序完成嗎?
@MostyMostacho可以幫忙嗎? – rahulserver