(5)bs4ライブラリに基づくHTMLコンテンツの取得
(1)情報のマーキング
-
マークされた情報は、情報の次元を増やす情報編成構造を形成できます。
-
タグの構造は情報と同じくらい重要です
-
マークされた情報は、通信、保存、または表示に使用できます
-
マークされた情報は、プログラムの理解と応用に役立ちます
-
例:HTMLはWWW(World Wide Web)情報の整理方法です
-
HTMLは、事前定義された<>…</>タグを通じてさまざまなタイプの情報を整理します
(2)3種類の情報マーキング
1.XML
<!-- XML(eXtensible Markup Language) -->
<!-- 标签tag -->
<!-- 名称img 后接属性 -->
<img src="china.jpg" size="10">...</img>
<!-- 空元素的缩写形式 -->
<img src="china.jpg" size="10" />
<name>...</name>
<name />
<!-- -->
2.JSON
- JSON仕様によると、コメントはサポートされていません
- 主に過度のコメントを防止し、ファイル自体のデータキャリアに影響を与える目的で
JSON(JavaScript Object Notation)
//有类型的键值对 key:value
//"name"是类型
"name" : "靓仔"
//多值用[,]组织
"name" : ["靓仔", "美眉"]
//键值对嵌套用{,}
"name" : {
"newName" : "钢铁侠二代" ,
"oldName" : "钢铁侠一代"
}
//三种书写形式
"key" : "value"
"key" : ["value1", "value2"]
"key" : {"subkey" : "subvalue"}
3.YAML
YAML(YAML Ain't Markup Language)
# 无类型的键值对 key:value
# name仅是字符串
name : 靓仔
# 缩进表达所属关系
name :
newName : 钢铁侠二代
oldName : 钢铁侠一代
# - 表达并列关系
name :
-钢铁侠二代
-钢铁侠一代
# | 表达整块数据
text: | #示例乱码
sdadadwafaqagerghehreqtggfqegqeg
regrqegrqegeqgreqgregqegqergqert
# 三种书写形式
key : value
key : #Comment
-value1
-value2
key :
subkey : subvalue
(3)3種類の情報マーキングの比較
-
XML
-
最も初期の一般的な情報マークアップ言語、優れたスケーラビリティ、ただし扱いにくい
-
インターネット上の情報交換と送信
-
JSON
-
プログラム処理(js)に適した、XMLよりも簡潔なタイプの情報があります。
-
モバイルアプリケーションクラウドとノード情報通信、メモなし
-
Yamla
-
情報の種類がなく、テキスト情報の割合が最も高く、読みやすい
-
さまざまなシステムの設定ファイル、メモで読みやすい
(4)情報抽出と方法
- 情報抽出:マークされた情報から関心のあるコンテンツを抽出します
1.一般的な方法1
- 情報のマークアップフォームを完全に分析し、重要な情報を抽出する
- XML、JSON、YAML)
- たとえば、タグパーサーが必要です:bs4ライブラリのタグツリートラバーサル
- 利点:正確な情報分析
- 短所:抽出プロセスが面倒で遅い
2.一般的な方法2
- マークフォームを無視して、主要な情報を直接検索する
- 検索:情報のテキストの機能を見つける
- 利点:抽出プロセスはシンプルで高速です
- 抽出結果の正確さは情報コンテンツに関連しています
3.フュージョン法
- 形式分析と検索方法を組み合わせて主要な情報を抽出する
- (XML、JSON、YAML、検索)
- タグパーサーとテキスト検索機能が必要
4.例
(5)bs4ライブラリに基づくHTMLコンテンツ検索方法
# 返回一个列表类型,存储查找的结果
<>.find_all(name, attrs, recursive, string, **kwargs)
# 检索目标标签名为a,b
soup.find_all('a')
soup.find_all(['a','b'])
# 检索目标标签名为p,含属性course
soup.find_all('p','course')
# 检索目标含指定属性,引入re库(正则表达式库)
soup.find_all(id='link1')
soup.find_all(id=re.compile('link'))
#由于find_all方法很常用,为方便使用
<tag>(..) 等价于 <tag>.find_all(..)
soup(..) 等价于 soup.find_all(..)
パラメータ名 | 解説 |
---|---|
名前 | タグ名の検索文字列 |
attrs | タグ属性値の検索文字列 |
再帰的 | すべての子孫を検索するかどうか、デフォルトはTrue |
ストリング | <>…</>の文字列領域の検索文字列 |
方法 | 解説 |
---|---|
<>。find() | 1つの結果、文字列型のみを検索して返す |
<>。find_parents() | 祖先ノードを検索し、リストタイプを返す |
<>。find_parent() | 祖先ノードで結果を返す |
<>。find_next_siblings() | 後続の並列ノードを検索し、リストタイプを返す |
<>。find_next_sibling() | 後続の並列ノードで結果を返す |
<>。find_previous_siblings() | 事前注文並列ノードを検索し、リストタイプを返します |
<>。find_previous_sibling() | preorder並列ノードで結果を返す |
方法 | 解説 |
---|---|
<>。find() | 1つの結果、文字列型のみを検索して返す |
<>。find_parents() | 祖先ノードを検索し、リストタイプを返す |
<>。find_parent() | 祖先ノードで結果を返す |
<>。find_next_siblings() | 後続の並列ノードを検索し、リストタイプを返す |
<>。find_next_sibling() | 後続の並列ノードで結果を返す |
<>。find_previous_siblings() | 事前注文並列ノードを検索し、リストタイプを返します |
<>。find_previous_sibling() | preorder並列ノードで結果を返す |