Python爬蟲——Xpath和lxml

2021-03-02 Python編程學習圈
1. Xpath 基本語法
1.1什麼是XpathXpath,全稱 XML Path Language,及XML路徑語言,是一門在XML文檔中查找信息的語言,最初是用來搜尋XML文檔的,但是它同樣適用於HTML文檔的搜索。1.2 常用規則

獲取文本

表達式描述a/text()獲取 a 下的文本a//text()獲取 a 下所有元素的文本//a[text()='下一頁']獲取文本為下一頁的 a 元素

獲取屬性

表達式描述nodename選取此節點的所有子節點/從當前節點選取直接子節點//從當前節點選取子孫節點.選取當前節點..選取當前節點的父節點@選取屬性*匹配任何元素節點@*匹配任何屬性節點node()匹配任何類型的節點1.3示例路徑表達式結果/bookstore/book[1] (注意下標從1開始)選取屬於 bookstore 子元素的第一個book元素/bookstore/book[last()]選取屬於 bookstore 子元素的最後一個 book 元素/bookstore/book[last()-1]選取屬於 bookstore 子元素的倒數第二個 book 元素/bookstore/book[position()<3]選取屬於 bookstore 子元素的 最前面兩個 book 元素//title[@lang]選取所有擁有名為 lang 的屬性的title元素//title[@lang='eng']選取所有 lang 屬性為 eng 的 title 元素/bookstore/book[price>35.00]選取 bookstore 元素下所有 book 元素,它們的 price 元素值大於 35.00/bookstore/book[price>35.00]/title選取 bookstore 元素中的 book 元素的所有 title 元素,且 price 元素的值大於35.00/bookstore/*選取 bookstore 的所有子元素//*選取文檔中的所有元素//node()/meta[]/@*選取 html 下面任意節點的 meta 節點的所有屬性//title[@*]選取所有帶有屬性的 title 元素//book/title | // book/price選取 book 元素的所有 title 和 price 元素//title | //price選取文檔中的所有 title 和 price 元素//bookstore/book/title | //price選取屬於 bookstore 元素的 book 元素的所有 title 元素,以及文檔中所有的 price 元素2. lxml的使用2.1 使用注意點lxml 能夠修正 HTML 代碼,但是可能會改錯了,解決方法:使用etree.tostring觀察修改之後的html的樣子,根據修改之後的html字符串寫xpath遍歷,取其中每一組進行數據的提取,不會造成數據的對應錯亂2.2 簡單示例

from lxml import etree

text = ''' <div> <ul>
<li><a href="link1.html">first item</a></li>
<li><a href="link2.html">second item</a></li>
<li><a href="link3.html">third item</a></li>
<li><a href="link4.html">fourth item</a></li>
<li><a href="link5.html">fifth item</a>
</ul> </div> '''

html = etree.HTML(text)

print(html) # <Element html at 0x1f1007c9d08>
print(etree.tostring(html).decode())

# 獲取 class 為 item-1 li 下的 a 的 href
ret1 = html.xpath('//li[@class="item-1"]/a/@href')
print(ret1)

# 獲取 class 為 item-1 li 下的文本
ret2 = html.xpath("//li[@class='item-1']/a/text()")
print(ret2)

# 把 url 和 文本組成字典
# 如果其中一個獲取失敗或者沒有數據,則url 和 title 就不是原來對應的結果
for i in ret1:
item = {}
item['url'] = i
item['title'] = ret2[ret1.index(i)]
print(item)

# 改進
ret3 = html.xpath('//li[@class="item-1"]')
for i in ret3:
item = {}
item['url'] = i.xpath('./a/@href')[0] if len(i.xpath('./a/@href')) else None # ./a/@href 表示當前節點下的
item['title'] = i.xpath('./a/text()')[0] if len(i.xpath('./a/text()')) else None
print(item)

聲明:https://juejin.cn/post/6844903764302757895

相關焦點

  • 10-python爬蟲之lxml庫
    python 官方文檔 http://lxml.de/index.html學習目的利用上節課學習的XPath語法,來快速的定位 特定元素以及節點信息,目的是 提取出 HTML、XML 目標數據如何安裝sudo apt-get install libxml2-dev libxslt1-dev
  • Python爬蟲利器之Xpath語法與lxml庫的用法
    參考來源lxml用法源自 lxml python 官方文檔,更多內容請直接參閱官方文檔,本文對其進行翻譯與整理。lxmlhttp://lxml.de/index.htmlXPath語法參考 w3schoolw3schoolhttp://www.w3school.com.cn/xpath/index.asp安裝pip install lxml利用 pip 安裝即可
  • python 爬蟲 | 解析庫之 XPath(1)
    自己學習 python 爬蟲已經有段時間了,但編程的學習過程總是邊學邊忘
  • Python 爬蟲必殺技:XPath
    小夥伴、大夥伴們,大家好~今天要給大家介紹的是Python 爬蟲必殺技:XPath。1. 簡介一提到網絡爬蟲,就不得不提到Xpath Helper,我們常常用它來對所要提取的文本內容進行定位,詳情可參考推文《Xpath Helper助Xpath爬蟲一臂之力》。除了這一利器外,了解Xpath定位的原理及其基本用法可以大幅提高我們的爬蟲技巧。
  • 第64天:XPath 和 lxml
    XPath 和 lxml XPath 全稱為 Xml Path Language,即 Xml 路徑語言,是一種在 Xml 文檔中查找信息的語言。它提供了非常簡潔的路徑選擇表達式,幾乎所有的節點定位都可以用它來選擇。XPath 可以用於 Xml 和 Html,在爬蟲中經常使用 XPath 獲取 Html 文檔內容。
  • 「爬蟲初步」十分鐘學會簡單實用XPath定位教程
    本文主要介紹Python3通過lxml模塊的簡單定位的教程,能夠解決爬蟲中大部分的數據獲取問題,適合新手學習。二、什麼是XPath?XPath 是一門在 XML 文檔中查找信息的語言。XPath 可用來在 XML 文檔中對元素和屬性進行遍歷。XPath 是 W3C XSLT 標準的主要元素。
  • Python解析庫lxml與xpath用法總結
    xpath和lxml庫進行展開:一、xpath 概念、xpath節點、xpath語法、xpath軸、xpath運算符二、lxml的安裝、lxml的使用、lxml案例一、xmod計算除法的餘數5 mod 21好了,xpath的內容就這麼多了。接下來我們要介紹一個神器lxml,他的速度很快,曾經一直是我使用beautifulsoup時最鍾愛的解析器,沒有之一,因為他的速度的確比其他的html.parser 和html5lib快了許多。
  • 使用XPath語法與lxml模塊提取信息
    XPath (XML Path Language) 是一門在 XML 文檔中查找信息的語言,可用來在 XML 文檔中對元素和屬性進行遍歷。lxml 是 一個HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 數據。lxml和正則一樣,也是用C實現的,是一款高性能的 Python HTML/XML 解析器,我們可以利用XPath語法,來快速的定位特定元素以及節點信息。
  • 數據提取工具lxml及xpath
    來自:標點符的《數據提取工具lxml及xpath》連結:https://www.biaodianfu.com
  • Python爬蟲:單線程、多線程和協程的爬蟲性能對比
    今天我要給大家分享的是如何爬取豆瓣上深圳近期即將上映的電影影訊,並分別用普通的單線程、多線程和協程來爬取,從而對比單線程、多線程和協程在網絡爬蟲中的性能。下面根據上面的測試基礎,我們完善整體的爬蟲代碼:單線程爬蟲import requestsfrom lxml import etreeimport pandas as pdimport remain_url = "https://movie.douban.com
  • python爬蟲技術:如何定位網頁上的內容?xpath定位元素
    在使用python爬蟲的時候,我們需要分析網頁元素,定位我們需要的內容。那麼,如何在python爬蟲過程中定位我們需要的內容的位置呢?接下來我們就來說說xpath定位。 xpath可以定位文檔中的節點。使用xpath可以在無法通過名字和id進行定位的時候,方便高效的查找元素。
  • Python新手爬蟲,簡單製作抓取廖雪峰的教程的小爬蟲
    Python 數據處理 Python編程從入門到實踐 核心編程基礎教程 網絡爬蟲入門書籍 python視頻編程從入門到精通 程序設計教材人民郵電¥72.2領3元券話不多說,先來看看整個爬蟲過程吧!目標:廖雪峰官網&mdash;python教程工具:pycharm、python3.6、requests庫、time庫、lxml庫思路:85 抓取所有的目錄章節 url85 找到 url內教程主體所在的 div
  • Python新手都可以做的爬蟲,抓取網上 OJ 題庫信息
    最近有朋友在做 OJ 題庫,順手做個小爬蟲,導出一份題庫列表來看看!目標:浙江大學題庫工具:python3.6,requests 庫、lxml 庫、pycharm思路:先找到網頁中題庫所在的位置然後我們點擊第一頁和後面幾頁,看看 url 的變化發現規律了嗎?
  • Python爬蟲實戰 批量下載高清美女圖片
    彼岸圖網站裡有大量的高清圖片素材和壁紙,並且可以免費下載,讀者也可以根據自己需要爬取其他類型圖片,方法是類似的,本文通過python爬蟲批量下載網站裡的高清美女圖片
  • 如何開始寫你的第一個python腳本——簡單爬蟲入門!
    好多朋友在入門python的時候都是以爬蟲入手,而網絡爬蟲是近幾年比較流行的概念,特別是在大數據分析熱門起來以後,學習網絡爬蟲的人越來越多,哦對,現在叫數據挖掘了!其實,一般的爬蟲具有2個功能:取數據和存數據!好像說了句廢話。。。
  • Python爬蟲常用四種定位元素方法,收藏備用!
    初學Python時,大家最喜歡做的事可能就是爬蟲吧!使用爬蟲採集數據時,如何從請求到的網頁中提取數據?如何定位數據?再審,借到書名的相應位置,這是初學爬蟲的同學要掌握的解析基礎。以前的爬蟲文章基本都是基於 XPath,大家應該都比較熟悉,下面直接給出代碼:import requestsfrom lxml import htmlurl = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00
  • python爬蟲-知網(CNKI)主題文獻
    學習爬蟲開始,我就想著對CNKI主題文獻進行爬蟲,對感興趣的主題文章進行抓取,獲取相關文章的基本信息和摘要,方便快速了解某一個領域的研究進程,重點等等。經過不斷的修改,終於完成此目的。在此爬蟲程序編寫過程,需要注意幾個問題。
  • Python爬蟲免費學習教程推薦
    2、《用Python實現爬取網頁》適合人群:零基礎想要學習Python開發的學習者推薦理由:該門Python爬蟲課程主要講述利用Python語言實現網絡爬蟲的技巧,主要內容包括網絡爬蟲簡介和scrapy製作小爬蟲兩大章節,相信大家通過學習教程一定會受益匪淺。
  • python數據抓取3種方法總結
    這篇文章主要給大家介紹了關於python數據抓取的3種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值
  • 跟我快速學網絡爬蟲:網頁分析技術之XPath
    要實現對某網站數據的爬取,需要對該網站上網頁數據進行分析,了解網頁的結構之後,在爬蟲代碼中編寫提取網頁中特定數據的代碼,這裡要用到解析技術技術。