1

I have a large HTML source code I would like to parse (~200,000) lines, and I'm fairly certain there is some poor formatting throughout. I've been researching some parsers, and it seems Beautiful Soup, lxml, html5lib are the most popular. From reading this website, it seems lxml is the most commonly used and fastest, while Beautiful Soup is slower but accounts for more errors and variation.

I'm a little confused on the Beautiful Soup documentation, http://www.crummy.com/software/BeautifulSoup/bs4/doc/, and commands like BeautifulSoup(markup, "lxml") or BeautifulSoup(markup, html5lib). In such instances is it using both Beautiful Soup and html5lib/lxml? Speed is not really an issue here, but accuracy is. The end goal is to parse get the source code using urllib2, and retrieve all the text data from the file as if I were to just copy/paste the webpage.

P.S. Is there anyway to parse the file without returning any whitespace that were not present in the webpage view?

4

1 に答える 1

4

私の理解 (BeautifulSoup をいくつかの目的で使用した経験がある) は、lxml や html5lib などのパーサーのラッパーであるということです。指定されたパーサーを使用して (デフォルトは Python のデフォルト パーサーである HTMLParser であると思います)、BeautifulSoup はタグ要素のツリーを作成し、タグ内に続く有用なデータを HTML でナビゲートおよび検索することを非常に簡単にします。Web ページからのテキストのみが必要で、特定の HTML タグからのより具体的なデータが必要ない場合は、次のようなコード スニペットのみが必要になる場合があります。

from bs4 import BeautifulSoup
import urllib2
soup = BeautifulSoup(urllib2.urlopen("http://www.google.com")
soup.get_text()

get_text は、複雑な Web ページにはあまり適していません (ランダムな javascript や css を取得することがあります) が、BeautifulSoup の使い方に慣れれば、必要なテキストだけを取得することは難しくありません。

あなたの目的のために、これらの他のパーサーのいずれかを BeautifulSoup (html5lib または lxml) で使用することを心配する必要はないようです。BeautifulSoup は多少のずさんな処理を独自に処理できます。処理できない場合は、「不正な HTML」またはそのようなものに関する明らかなエラーが発生し、html5lib または lxml をインストールするように指示されます。

于 2012-06-08T03:44:13.583 に答える