Jsoup を使用して HTML ページを解析しようとしていますが、いくつかの奇妙な問題が見つかりました。ページはhttp://www.filmaffinity.com/en/film290741.htmlであり、ご覧のとおり整形式ではありません。解析に影響すると思われるいくつかの問題があります。Firebug と Chrome を使用して、探している要素への XPath を取得しました (ページの 5.8 レート)。
Chrome は次を指します。
/html/body/table[2]/tbody/tr/td[2]/table/tbody/tr[1]/td/table[1]/tbody/tr/td[2]/table/tbody/tr[2]/td
Firebug は次のことを指しています。
/html/body/table[2]/tbody/tr/td[2]/table/tbody/tr/td/table/tbody/tr/td[2]/table/tbody/tr[2]/td
唯一の違いは、Firebug には表示されない Chromeの1です。パスを手動で確認しましたが、正しいです。
次に、特定の要素を後で抽出するために、xpath を Jsoup as の CSS クエリに変換しました。
Element rate=doc.select("html body table:nth-child(2) tbody tr td:nth-child(2) table tbody tr td table tbody tr td:nth-child(2) table tbody tr:nth-child(2) td")
コードを実行しても適切に位置付けられませんが、XPath で次のように Firebug が参照する要素に位置付けられます。
wrong:/html/body/table[2]/tbody/tr/td[2]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[15]/td[2]
right:/html/body/table[2]/tbody/tr/td[2]/table/tbody/tr/td/table/tbody/tr/td[2]/table/tbody/tr[2]/td
最後から見て、最初の違いは次のとおりです。
/td /テーブル/tbody/tr[15]/td[2]
2 番目の要素ではなく、最初の要素を取ります。
このような問題を解決する方法はありますか? 問題は HTML が適切に形成されていないことに関連しているのでしょうか、それとも、これを回避するために使用できる他の Jsoup テクニックが欠けているのでしょうか?
Jsoup を選択したのは、整形式でない Html を処理できるはずだったからです。私は要求が厳しすぎますか?
この種の問題に対処できる Jsoup の代替手段はありますか?