ホームページ >ウェブフロントエンド >htmlチュートリアル >Python による Web スクレイピングの詳細な HTML parsing_html/css_WEB-ITnose

Python による Web スクレイピングの詳細な HTML parsing_html/css_WEB-ITnose

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-21 08:55:011313ブラウズ

誰かがミケランジェロに「どうやって『ダヴィデ像』のような傑作を作ったのですか?」と尋ねると、ミケランジェロはこう答えました。「簡単です。採石場に行って、巨大な大理石の塊を見たのです。

同様に、Web ページをクロールするときは、不要なものを削除し、必要な情報を抽出する必要があります。 . ですが、この技術は非常に複雑です。この記事では HTML 解析技術を紹介します。

前回の記事 (Python による Web スクレイピング - 最初の Web スクレイピングの例) では、こちらの BeutifulSoup ライブラリと事前に連絡しました。属性

を通じてタグを見つけます。 ほとんどすべての Web サイトには CSS が含まれており、CSS は、

< など、さまざまな HTML 要素に依存してさまざまなタグを付けるのに非常に役立ちます。 ;span class="green">54bdf357c58b8a65c66d7c19c8e4d1149c5d3de9ca4a90fe42a8652fb2148d8054bdf357c58b8a65c66d7c19c8e4d114

Web サイトを見てみましょう - http://www.pythonscraping .com/pages/warandpeace.html、中には記事があり、話された言葉は赤色のフォントで、話者は緑色のフォントで表示されます。ソース コード スニペットの 1 つを選択します:

"d2de8625371256bcbd362426296758c2天よ!何という凶悪な攻撃だ!54bdf357c58b8a65c66d7c19c8e4d114」と王子は6cf026ade1ef8c19c5cdd21403c78df5/span>と答えたが、この歓迎には少しも動揺しなかった。

使用できます 前の記事で Web ページ全体を取得する BeautifulSoup オブジェクトを作成するために使用したプログラム:

from urllib.requestimport urlopenfrom bs4import BeautifulSouphtml = urlopen("http://www.pythonscraping.com/pages/warandpeace.html")bsObj = BeautifulSoup(html)

BeautifulSoup オブジェクトの findAll メソッドを使用してリストを抽出します指定された要件の

nameList = bsObj.findAll("span", {"class":"green"})for namein nameList:    print(name.get_text())

上記のコード証明書を配置します:

from urllib.requestimport urlopenfrom bs4import BeautifulSoup html = urlopen("http://www.pythonscraping.com/pages/warandpeace.html")bsObj = BeautifulSoup(html, "html.parser")nameList = bsObj.findAll("span", {"class": "green"})for namein nameList:    print(name.get_text())

実行結果:

アンナ

パブロヴナ・シェーラー

皇后マリア

……

上記のコードを説明してください:

bsObj.findAll( tagName、tagAttributes ) ページ全体のタグのリストを取得し、リストを反復処理して対応するタグのコンテンツを取得します

find() および findAll()

これら 2 つのメソッドそれらの宣言は非常に似ており、次のようになります:

findAll(tag,attributs,recursive,text,limit,keywords)find(tag,attributs,recursive,text,keywords)

タグパラメータこれは前に見たとおりです。文字列または文字列のリストを渡すことができます: .findAll({"h1","h2","h3","h4","h5","h6"})

attributes パラメータの受け渡し 属性とタグに一致する辞書。例: .findAll("span", {"class":"green", "class":"red"})

再帰パラメータが使用されます再帰を設定するかどうかを設定します

キーワード パラメーターを使用すると、次のような特別な属性を含めることができます。

from urllib.requestimport urlopenfrom bs4import BeautifulSoup html = urlopen("http://www.pythonscraping.com/pages/warandpeace.html")bsObj = BeautifulSoup(html, "html.parser")allText = bsObj.findAll(id="text")#也可以换为:allText = bsObj.findAll("",{"id":"text"})print(allText[0].get_text())

子タグを検索したい場合は、

from urllib.requestimport urlopenfrom bs4import BeautifulSoup html = urlopen("http://www.pythonscraping.com/pages/page3.html")bsObj = BeautifulSoup(html, "html.parser")for childin bsObj.find("table", {"id": "giftList"}).children:    print(child)

最初の行の 1257f50b853adb1dbb0471653d8799d4

— aeec36c01e32da2b7f270288e091a375

(1)

正規表現と BeautifulSoup

Python の正規表現については、以下を参照してください。私の他の記事「Python の基礎 (9) - 正規表現」

上記の Web ページの例は次の構造になっていることに注意してください:

f6be34c68ae89ba0c9619ad2ea82c275

すべての img タグを抽出する必要がある場合、前のステートメントに従って、この問題を解決するために findAll("img") を検討できますが、一部の最新の Web サイトでは img が非表示になります。 . およびその他の不確実な要素がある場合にのみ、正規表現を使用して解決できます。

from urllib.requestimport urlopenfrom bs4import BeautifulSoupimport re html = urlopen("http://www.pythonscraping.com/pages/page3.html")bsObj = BeautifulSoup(html, "html.parser")images = bsObj.findAll("img", {"src":re.compile("\.\.\/img\/gifts/img.*\.jpg")})for imagein images:    print(image["src"])

実行結果は次のとおりです:

.. /img/gifts/img1.jpg

../img/gifts/img2.jpg

../img/gifts/img3.jpg

../img /gifts/img4.jpg

../img/gifts/img6.jpg

著者: 工学館 1 号

出典: http ://wuyudong.com/1842.html

この記事の著作権は著者に帰属します。原文へのリンクは記事ページのわかりやすい位置にあります。そうでない場合、当社は法的責任を追及する権利を留保します。

この記事が役に立ったと思われる場合は、著者に少額の [スポンサーシップ] を行うことができます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:HTML+CSS勉強記(4)次の記事:HTML+CSS勉強記(4)