簡體   English   中英

htmlUnit行為異常。 我無法獲取正確數量的錨標記或鏈接標記?

[英]htmlUnit behaving oddly. I am not able to retrieve correct number of anchor tag or link tags?

我正在使用HtmlUnit 2.10。 我正在為網站創建一個小型鏈接驗證器。 對於爬行,我正在使用它。 在研究期間,我試圖進行爬網: loans.xxxxxxx.com 它具有58個錨標簽和5個鏈接標簽。

我正在寫這樣的代碼

    List<HtmlElement> elementsOfPage = (List<HtmlElement>) htmlPage.getElementsByTagName("link");
    Iterator<HtmlElement> it = elementsOfPage.iterator();
    System.out.println(elementsOfPage.size());
    while(it.hasNext()) {
        HtmlElement htmlElement = it.next();
        System.out.println(htmlElement.toString());
    }

我對錨標記也執行相同的步驟,即iea,對於鏈接,它僅顯示3,對於錨,它僅顯示56,即使分別有5和58。

代碼中有一些部分帶有注釋,我以為Web客戶端會忽略它,但是如果您實際打印,它將顯示一些結果實際上來自注釋代碼。

//在運行webclient之前,我禁用了applet,css,javascript,並將超時時間增加為7秒。

為什么這種行為很奇怪?

您如何獲得58和5這樣的數字? 我試圖檢查您提供的HtmlUnit 2.10 + JSoup解析器的URL。 代碼是(Groovy,但幾乎是Java):

def client = new WebClient(BrowserVersion.FIREFOX_3_6)
client.setThrowExceptionOnScriptError(false);
def page = (HtmlPage)client.getPage("http://loans.bankofamerica.com/en/index.html")
def doc = Jsoup.parse(page.asXml())
println doc.select("a").size()
println doc.select("link").size()

結果分別為56和2。但是使用默認的UserAgent

def client = new WebClient()

結果是56和3! 似乎服務器根據useragent字符串(可能還有其他標頭)提供了不同的標記。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM