Python クローラー Web ページ分析アーティファクト Xpath の詳細な説明

1. XPath の概要

XPath は、XML ドキュメント内の情報を検索するための言語です。元々は XML ドキュメントを検索するために設計されましたが、HTML ドキュメントの検索にも使用できます。

2. lxmlをインストールする

lxml は Python 用のサードパーティ解析ライブラリで、HTML および XML 解析をサポートしており、非常に効率的であり、XML 解析における Python 独自の xml 標準ライブラリの欠点を補っています。

サードパーティのライブラリをインストールする方法:pip install lxml

3. XPath分析原理

  1. etree オブジェクトをインスタンス化するには、解析されたページのソース コード データをオブジェクトにロードする必要があります。
  2. etree オブジェクトの xpath メソッドを xpath 式と組み合わせて呼び出して、ラベルの配置とコンテンツのキャプチャを実現します。

4. etree オブジェクトをインスタンス化します。

  1. ローカル HTML ドキュメントのソース コード データを etree オブジェクトにロードします。etree.parse(filePath)
  2. インターネットから取得したソース コード データをオブジェクトに読み込みます。etree.HTML(response.text)
  3. xpath('xpath式')

5. XPath パス式

表現 説明する
/ ルートノードから選択
// 任意の位置から始まる複数のレベルを表します
現在のノードを選択
現在のノードの親ノードを選択します
@ 属性を選択
//div[@class='title'] tag[@attrName=“attrValue”] 属性の配置
//div[@class=“zhang”]/p[3] インデックスの配置、インデックスは 1 から始まります
/文章() 取得されるのはラベル内の直接のテキストコンテンツです
//文章() タグ内の非即時テキスト コンテンツ (すべてのテキスト コンテンツ)
/@attrName ==>img/src 属性を取得する

6. 実戦解説と合わせて

CSDN Web サイトを例として説明します。
ここに画像の説明を挿入
: ここでは、公式 Web サイトのトップページにあるヘッドライン ブログのタイトルを取得したいと考えています。コンソールを開き (コンソール上の小さな矢印をクリックするか、Ctrl+Shift+C を同時に押します)、タイトルをポイントし、 div タグのクラス値に従ってそれを見つけます (これは通常、より多くの xpath 構文を使用します。

from lxml import etree
import requests

headers = {
    
    
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
}
url = "https://www.csdn.net/"
response = requests.get(url=url, headers=headers)
# 使用etree解析
data = etree.HTML(response.text)
# //div表示任意路径下的div标签
names = data.xpath("//div[@class='headlines']/div[@class='headlines-right']//div[@class='headswiper-item']/a/text()")
url = data.xpath("//div[@class='headlines']/div[@class='headlines-right']//div[@class='headswiper-item']/a/@href")

blog_list = list(zip(names, url))
for blog in blog_list:
    print(blog)


効果を実感してください:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_44723773/article/details/128760503