この記事では主に Python クローラーでの xpath の基本的な使用方法を紹介し、参考として提供します。一緒に見てみましょう
1. はじめに
XPath は、XML ドキュメント内の情報を検索するための言語です。 XPath を使用すると、XML ドキュメント内の要素と属性をトラバースできます。 XPath は W3C XSLT 標準の主要な要素であり、XQuery と XPointer は両方とも XPath 式に基づいて構築されています。
2. インストール
3.
rreeeを使用します。基本的な使い方
pip3 install lxml
以下からその結果、プリンターの HTML は実際には Python オブジェクトであり、etree.tostring(html) は不完全な HTML の基本的な記述メソッドであり、ラベルの欠落している腕と脚を完成させます。
from lxml import etree
3. 特定のタグの内容を取得する (基本的な使用法) a タグのすべての内容を取得するには、a の後にスラッシュを追加する必要はありません。そうしないとエラーが発生します。報告される。
書き方その1
from lxml import etree wb_data = """ <p> <ul> <li class="item-0"><a href="link1.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" >first item</a></li> <li class="item-1"><a href="link2.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >second item</a></li> <li class="item-inactive"><a href="link3.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" >third item</a></li> <li class="item-1"><a href="link4.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" >fourth item</a></li> <li class="item-0"><a href="link5.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" >fifth item</a> </ul> </p> """ html = etree.HTML(wb_data) print(html) result = etree.tostring(html) print(result.decode("utf-8"))
書き方その2(見つける必要があるタグの直後に/text()を追加するだけです)
<Element html at 0x39e58f0> <html><body><p> <ul> <li class="item-0"><a href="link1.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" >first item</a></li> <li class="item-1"><a href="link2.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >second item</a></li> <li class="item-inactive"><a href="link3.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" >third item</a></li> <li class="item-1"><a href="link4.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" >fourth item</a></li> <li class="item-0"><a href="link5.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" >fifth item</a> </li></ul> </p> </body></html>
4. HTMLファイルを開いて読みます
html = etree.HTML(wb_data) html_data = html.xpath('/html/body/p/ul/li/a') print(html) for i in html_data: print(i.text) <Element html at 0x12fe4b8> first item second item third item fourth item fifth item
html = etree.HTML(wb_data) html_data = html.xpath('/html/body/p/ul/li/a/text()') print(html) for i in html_data: print(i) <Element html at 0x138e4b8> first item second item third item fourth item fifth item
5. 指定されたパスの下にあるタグの属性を出力します (トラバースして属性の値を取得し、タグの内容を見つけることができます)
#使用parse打开html的文件 html = etree.parse('test.html') html_data = html.xpath('//*')<br>#打印是一个列表,需要遍历 print(html_data) for i in html_data: print(i.text)
Print:
link1.htmllink2.htmllink4.html
link5.html
6. xpath を使用して ElementTree オブジェクトを 1 つずつ取得することがわかっています。コンテンツを見つける必要がありますが、リストを走査してデータを取得する必要もあります。 絶対パス下のaタグ属性がlink2.htmlと等しいことが分かりました。
html = etree.parse('test.html') html_data = etree.tostring(html,pretty_print=True) res = html_data.decode('utf-8') print(res) 打印: <p> <ul> <li class="item-0"><a href="link1.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" >first item</a></li> <li class="item-1"><a href="link2.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >second item</a></li> <li class="item-inactive"><a href="link3.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" >third item</a></li> <li class="item-1"><a href="link4.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" >fourth item</a></li> <li class="item-0"><a href="link5.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" >fifth item</a></li> </ul> </p>
Print:
['2 番目の項目']2 番目の項目7 上ではすべての絶対パス (それぞれルートから始まります) が見つかり、下では相対パス Path が見つかります。たとえば、すべての li タグの下にあるタグのコンテンツを検索します。html = etree.HTML(wb_data) html_data = html.xpath('/html/body/p/ul/li/a/@href') for i in html_data: print(i)
印刷:
['最初のアイテム', '2番目のアイテム', '3番目のアイテム', '4番目のアイテム', '5番目のアイテム']最初のアイテム2番目のアイテム['link1.html', 'link2.html', 'link3.html', 'link4.html', 'link5.html']link1.html link2.htmllink3.html3番目のアイテム
4 番目の項目
8. 上記では、href 属性値に等しい a タグのすべての属性を見つけるために絶対パスを使用しました。次に、絶対パスを使用します。 l を検索する相対パス a タグの下の li タグの下の相対パスの下の href 属性の値 a タグの後には二重の // が必要であることに注意してください。html = etree.HTML(wb_data) html_data = html.xpath('/html/body/p/ul/li/a[@href="link2.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ]/text()') print(html_data) for i in html_data: print(i)印刷:
[]2番目の項目link4.html
link5.html
9. 相対パスでの特定の属性の確認方法は、絶対パスでの確認方法と同様であると言えます。 。html = etree.HTML(wb_data) html_data = html.xpath('//li/a/text()') print(html_data) for i in html_data: print(i)Print:
10. 最後のliタグのaタグのhref属性を見つけます
['fifth item']fifth itemhtml = etree.HTML(wb_data) html_data = html.xpath('//li/a//@href') print(html_data) for i in html_data: print(i)。 Print :
11. 最後から 2 番目の li タグ
['fourth item' ] 4 番目の項目html = etree.HTML(wb_data) html_data = html.xpath('//li/a[@href="link2.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ]') print(html_data) for i in html_data: print(i.text)の a タグの href 属性を見つけます。Print:
12. ページ上のタグの xpath パスを抽出すると、次の図が表示されます:
よく使われるhtml = etree.HTML(wb_data) html_data = html.xpath('//li[last()]/a/text()') print(html_data) for i in html_data: print(i)説明: 相対パスを使用してすべてのタグを検索し、属性 ID は kw タグと同じです。
html = etree.HTML(wb_data) html_data = html.xpath('//li[last()-1]/a/text()') print(html_data) for i in html_data: print(i)
Python クローラー 実際のブラウザーを使用して Web ページを開く 2 つの方法の概要
以上がPythonクローラーにおけるxpathの基本的な使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
