0

私はhtmlドキュメントを操作していて、テーブルをリッピングして、正しいテーブルであることが判明した場合にそれらを解析しています。結果に満足しています。抽出プロセスでは、95%以上のケースで行ラベルと列見出しが正常にマッピングされますが、そうでない場合は、問題を特定して他のアプローチを使用できます。

iternetをスキャンしてみると、ブラウザには、基になるhtmの形式が正しくない場合でも、htmページのコンテンツを適切に表示するための非常に強力な「エンジン」があることがわかりました。テーブルの解析で発生する問題は、ヘッダーをデータ行から分離できない、または行ラベルを1つ以上の隣接するデータ値から分離できず、隣接するデータ値を正しく解析できないなどの問題に関係しています。 。(2つの隣接する列見出しではなく、1つの列見出しにマップされる2つのデータ値がある場合があります。つまり、appleというラベルの付いた列見出しがあり、次にbananaというラベルの付いた1つの列見出しがある場合、バナナに値「112512345」が割り当てられる可能性があります。 (またはapple)値1125をappleに割り当て、12345をbananaに割り当てる代わりに、出力の列見出し。

最初に言ったように、95%の確率で正しく処理され、問題が発生したときに出力で確認できます。HTMLからのロジックと推論を使用してこれらをクリーンアップできる範囲で行ったと思い始めているので、新しいアプローチが必要かどうか疑問に思い始めています。

このパーサーを支援するためにブラウザーの「エンジン」を利用する方法はありますか?最終的に、ブラウザが列と行を適切に表示して画面に適切に表示できる場合、行と列のスパンが一貫していない場合でも処理するテクノロジがいくつかあります(たとえば)。

観察してくれてありがとう

4

2 に答える 2

2

実際、ブラウザエンジンは、HTMLの解析が意図的に愚かであり、取得する内容がごくわずかであると想定しています。lxmlとBeautifulSoupは、このレベルの愚かさを模倣しようとするため、使用するのに適切なツールです。

于 2010-03-06T20:03:46.777 に答える
2

「ブラウザの「エンジン」を利用する」ために、現時点での最善の策は間違いなくSeleniumRCです。ただし、その主な利点は、 「ブラウザと同じように」 javascriptを処理することです(他のオプションはほとんどありません)。レンダリング時に「見た目」は問題ないが、単純に論理的に壊れているテーブルの場合、ブラウザー(したがってSelenium)はlxmlやBeautifulSoupと同じように無力である可能性があります。それでも、試してみる価値があるかもしれません。

于 2010-03-06T23:25:53.223 に答える