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

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

Jun 21, 2016 am 08:55 AM

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

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

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

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

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

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

"天よ!何という凶悪な攻撃だ!」と王子は/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)
ログイン後にコピー

最初の行の コンテンツを削除したい場合は、next_siblings

from urllib.requestimport urlopenfrom bs4import BeautifulSoup html = urlopen("http://www.pythonscraping.com/pages/page3.html")bsObj = BeautifulSoup(html, "html.parser")for siblingin bsObj.find("table", {"id":"giftList"}).tr.next_siblings:    print(sibling)
ログイン後にコピー
<🎜 を使用できます。 >

親タグを見つけたい場合は、previous_siblings を使用できます:

from urllib.requestimport urlopenfrom bs4import BeautifulSoup html = urlopen("http://www.pythonscraping.com/pages/page3.html")bsObj = BeautifulSoup(html, "html.parser")print(bsObj.find("img",{"src":"../img/gifts/img1.jpg"}).parent.previous_sibling.get_text())
ログイン後にコピー

以下の HTML 構造は一目瞭然です

(3)

— “$15.00”

(4)

— s

(2)

(1)

正規表現と BeautifulSoup

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

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

すべての 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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

&lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? &lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

See all articles