質問

私は現在、かなり整形されていないHTMLを持つWebサイトをスクレイピングしようとしています(多くの場合、終了タグが欠落していたり​​、クラスやIDが使用されていないため、必要な要素に直接移動するのが非常に困難であるなど)。私はこれまで BeautifulSoup を使用してある程度の成功を収めてきましたが、時折 (非常にまれではありますが) BeautifulSoup が (たとえば) Firefox や Webkit とは少し異なる方法で HTML ツリーを作成するページに遭遇します。HTML の書式設定があいまいなままになっているため、これは理解できますが、Firefox や Webkit が生成するものと同じ解析ツリーを取得できれば、はるかに簡単に解析できるでしょう。問題は通常、サイトが開くようなものです。 <b> タグを 2 回付け、BeautifulSoup が 2 番目のタグを認識したとき <b> タグを使用すると、Firefox と Webkit が最初のタグをすぐに閉じます。 <b> タグ。

Firefox または WebKit によって生成された解析ツリーを再現できる (または、少なくとも曖昧な場合は BeautifulSoup よりも近くなる) Python (または他の言語 (絶望的になってきました)) 用の Web スクレイピング ライブラリはありますか。

役に立ちましたか?

解決

使用 BeautifulSoup の<のhref = "HTTPのツリービルダーのように://コード.google.com / P / html5lib /」のrel = "noreferrer"> html5libするます:

from html5lib import HTMLParser, treebuilders

parser = HTMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup"))

text = "a<b>b<b>c"
soup = parser.parse(text)
print soup.prettify()

出力:

<html>
 <head>
 </head>
 <body>
  a
  <b>
   b
   <b>
    c
   </b>
  </b>
 </body>
</html>

他のヒント

pyWebKitGTK 何かの役に立つようです。

また、同じことをしなければならなかったが、JavaScript の実行後にコンテンツのエクスポートを取得した男がいます。 pyWebKitGTKを使用してPythonからJavaScriptを実行します.

pyWebkitGTK で チーズショップ.

あなたもすることができます pyQtでこれを行う.

あなたは scrapy を試してみましたか?

  

Scrapyは、高速高レベルの画面であります   こするとWebフレームワークをクロール、   クロールウェブサイトや抽出するために使用   自分のページから構造化データ。それ   の広い範囲で使用することができます   目的、データマイニングからの   監視と自動テストます。

あなたは SeleniumRC にしてお好みのブラウザを駆動することができます。

あなたはMechanizeのモジュールを見てみたいことがあります:

http://wwwsearch.sourceforge.net/mechanize/する

任意の言語は、

受け入れ可能である場合は、(WebCoreのコンポーネントで)独自のパーサーを使用できるよう、

さて、WebKitがオープンソースであります

Ian Bicking はかつて、驚くべきことに、BeautifulSoup よりも lxml の方がスープの解析に優れている可能性があると書きました。 http://blog.ianbicking.org/2008/12/10/lxml-an-underappreciated-web-scraping-library/ (参考までに述べただけで、個人的に試したわけではありません)

あなたはbeautifulsoupで、lxmlのパーサーを使用することができ、そしてあなたが放火犯を使用して要素を検査するときにXPathをコピーすることができ、フォーマットされていないHTMLページ内のデータを検索するためにXPathを使用します。

このチュートリアルをチェックアウトすることができます: http://www.youtube.com/watch?v=PgWfF-Ut0zMする

ドキュメントからは次のようです 信じられない美しいスープ パーサーはあなたが望むものです:

icantbelieveitsbeautifulsoupは、BeautifulSoupのサブクラスでもあります。HTML標準により密接に適合するHTMLヒューリスティックがありますが、HTMLが現実の世界でどのように使用されるかを無視しています。たとえば、それu003CB>はタグをネストするために有効なHTMLですが、現実の世界では、ネストされたu003CB>タグはほとんどの場合、著者が最初のu003CB>タグを閉じるのを忘れていたことを意味します。u003C/b>u003C/b>u003C/b>実際にu003CB>タグをネストする人に出くわした場合は、icantbelieveiveitsbeautifulsoupを使用できます。u003C/b>

私はそれを自分自身を使用しています私には、

この1つのルックスの良い:リンクする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top