Web クローラー開発のための実用的なソース コード: https://github.com/MakerChen66/Python3Spider
オリジナルであることは簡単ではありません。この記事では盗作と転載が禁止されています。長年の実用的なクローラー開発経験の要約であり、侵害を調査する必要があります。 !
1. 美しいスープ
美しいスープのご紹介:
クローラーツール、優れた分析ツール
ダウンロード公式サイト:https://www.crummy.com/software/BeautifulSoup
インストール方法:
Windows ユーザーはコマンドラインに次のように入力します。
pip install lxml -i https://pypi.doubanio.com/simple
pip install beautifulsoup4 -i https://pypi.doubanio.com/simple
Mac ユーザーは次のように入力します。
pip3 install lxml -i https://pypi.doubanio.com/simple
pip3 install beautifulsoup4 -i https://pypi.doubanio.com/simple
インポート時のモジュール名に注意してください。
from bs4 import BeautifulSoup
bs4 には BeautifulSoup モジュールのみが必要です。
簡単な例: prettify() 形式の出力
1.1 4 種類のオブジェクト
1.1.1 4 種類のオブジェクト - タグ
タグは HTML のタグです
注: 要件を満たす最初のタグが返されます (HTML 内に要件を満たすタグが複数ある場合でも)
attrs() -> タグの要素属性を取得
get() メソッド -> getタグ ディクショナリの要素の値を
変更、削除などして、これらの属性や内容などを変更できます。
1.1.2 4 種類のオブジェクト - NavigableString
タグの内容を取得する
1.1.3 4 種類のオブジェクト——コメント
<!-- Custom styles for this template -->
HTML は、Web ページを通じて表示されないコンテンツを追加する<!-- 注释内容 -->
ために使用
1.1.4 4 種類のオブジェクト —BeautifulSoup
BeautifulSoup オブジェクトはドキュメントのコンテンツ全体を表します
1.2 ドキュメントツリー
1.2.1 ドキュメント ツリー - すべての子孫ノード
.descendants ラベル内のすべての子孫ノードをリストします。for ループで処理できます。
for child in soup.descendants:
print(child)
注: スペースと改行は 1 つのノードとしてカウントされます
1.2.2 ドキュメントツリー - ノードのコンテンツ
1 つのタグで複数のコンテンツを取得するにはどうすればよいですか? .strings または .stripped_strings
for string in soup.ol.strings:
print(string)
for string in soup.ol.stripped_strings:
print(string)
.strings と .stripped_strings の違いは何ですか? .stripped_stirngs は余分な空白のコンテンツを削除できます
1.2.3 ドキュメント ツリー - 親ノード
.parent 現在のタグの親ノードを取得します。parents
現在の要素のすべての親ノードを取得します
print(soup.p.parent.name)
<a><p>Makerchen</p></a>
1.2.4 ドキュメントツリー - 兄弟ノード
兄弟ノード: 現在のノードと同じレベルのノード
<a class = "test">test</a>
<p class = "test1">test1</p>
.next_sibling 次の兄弟
ノードを取得します。prev_sibling 前の兄弟ノードを取得します
1.2.5 ドキュメント ツリー - フロント ノードとバック ノード
前後のノード: 階層に関係なく、このノードの前後のすべてのノード。兄弟ノードとの違いに注意してください。
next_element
previous_element
next_elements
previous_elements
1.3 ドキュメントツリーの検索 - find_all
.find_all は現在のタグのすべてのタグ子ノードを取得できます
print(soup.find_all('a'))
Find_all() は、ラベル名 (a、p、h1、ol など)、リスト (['a'、'p'])、正規表現などのパラメータを直接入力できます。
キーワードパラメータ:find_all(タグ内の属性名=属性値)
print(soup.find_all(content='A'))
制限パラメータ: 返される結果の数を制限します。
再帰パラメータ: タグの直接の子ノードのみを検索したい場合は、パラメータ recursive=False を使用できます。
1.4 CSSセレクター
Soup.select() は要素をフィルタリングしてリストを返します
文法規則:
标签名不加任何修饰
class前面加点
id前面加#
2、元のリンク
私のオリジナルの公開アカウントの原文へのリンク:原文を読む
オリジナリティを高めるのは簡単ではありません。役に立ったと思ったら、高評価をいただければ幸いです。ありがとうございます。
3. 著者情報
著者: Xiaohong の釣り日報、目標: プログラミングをもっと面白くする!
元の WeChat 公開アカウント:「Xiaohong Xingkong Technology」。アルゴリズム、クローラー、ウェブサイト、ゲーム開発、データ分析、自然言語処理、AI などに重点を置いています。ご注目をお待ちしております。一緒に成長し、コーディングしましょう!
転載指示: この記事は盗作と転載を禁止しており、違反者は起訴されます。