0

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 を実行する前に、アプレット、CSS、JavaScript を無効にし、タイムアウトを 7 秒に増やしました。

この動作がおかしいのはなぜですか?

4

1 に答える 1

0

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文字列(およびおそらく他のヘッダー)に応じて異なるマークアップを提供するようです。

于 2012-08-18T14:56:41.523 に答える