4

BeautifulSoup4 for Python で次のコマンドを実行すると:

soup = BeautifulSoup("<a href='http://somelink'>link</a>")
print soup

出力は次のとおりです。

<a href="http://somelink">link</a>

BeaurifulSoup は一重引用符を二重引用符に置き換えますが、それは望ましくありません。その動作をキャンセル/上書きするにはどうすればよいですか?

説明:

urllib2 を使用して次のページの html を取得し、http://www.download3000.com/BeautifulSoup4 を使用して html の一部のみを抽出します。

ドキュメント (必ずしも html ではない) と、それがキャッチする必要があるもののいくつかのサンプルを取得し、正規表現を返す関数を作成しました。関数に次のサンプルをフィードします。

samples = [
    '/showarticles-1-0-date.html',
    '/showarticles-2-0-date.html',
    '/showarticles-3-0-date.html'
]

ページの html コードとhttp://www.download3000.com/上記のサンプルを指定すると、関数は次の正規表現を返します。\w\w><li><a href="(.*?)">\w\w\w\w\w

download3000 の html コードに正規表現を適用すると、一致するものが見つかりません。これは、html ではリンクがシングル クォーテーションで囲まれているためですが、BeautifulSoup を使用するとシングル クォーテーションがダブル クォーテーションに置き換えられ、生成された正規表現は BeaurifulSoup によって変更された html でのみ機能します。

\w\w><li><a href='(.*?)'>\w\w\w\w\wそのため、生成された正規表現が になり、必要なものがページから抽出されるように、BeautifulSoup が一重引用符を二重引用符に置き換えないようにする必要があります。

正規表現のすべての一重引用符を に置き換えるなどのダンプ ソリューションを使用できますが、正規["\']表現は不要なリンクもキャッチします。

4

1 に答える 1