日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

xpath解析库的语法及使用

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xpath解析库的语法及使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1、xpath解析庫
    • 2、xpath語法
    • 3、案例: 豆瓣電影的相關信息

1、xpath解析庫

# Xpath解析庫介紹:數據解析的過程中使用過正則表達式, 但正則表達式想要進準匹配難度較高, 一旦正則表達式書寫錯誤, 匹配的數據也會出錯.網頁由三部分組成: HTML, Css, JavaScript, HTML頁面標簽存在層級關系,即DOM樹, 在獲取目標數據時可以根據網頁層次關系定位標簽, 再獲取標簽的文本或屬性.

xpath解析庫解析數據原理:

  • 根據網頁DOM樹定位節點標簽
  • 獲取節點標簽的正文文本或屬性值
  • xpath安裝, 初體驗 --> 使用步驟:

    1.xpath安裝: pip install lxml 2.requests模塊爬取糗事百科熱門的標題: import requests from lxml import etreeurl = 'https://www.qiushibaike.com/' headers = {"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36' }res = requests.get(url=url, headers=headers)tree = etree.HTML(res.text) title_lst = tree.xpath('//ul/li/div/a/text()') for item in title_lst:print(item)3.xpath使用步驟: from lxml import etreetree = etree.HTML(res.text) tree = etree.parse(res.html, etree.HTMLParse()) # 示例如下, 了解內容tag_or_attr = tree.xpath('xpath表達式')

    xpath解析本地文件

    import requests from lxml import etreeurl = 'https://www.qiushibaike.com/' headers = {"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36' }res = requests.get(url=url, headers=headers) with open('qb.html', 'w', encoding='utf-8') as f:f.write(res.text)tree = etree.parse('./qb.html', etree.HTMLParser()) title_lst = tree.xpath('//ul/li/div/a/text()') for item in title_lst:print(item)

    2、xpath語法

    1.常用規則:
    1. nodename: 節點名定位
    2. //: 從當前節點選取子孫節點
    3. /: 從當前節點選取直接子節點
    4. nodename[@attribute="…"] 根據屬性定位標簽 ‘//div[@class=“ui-main”]’
    5. @attributename: 獲取屬性
    6. text(): 獲取文本
    2.屬性匹配兩種情況: 多屬性匹配 & 單屬性多值匹配
    2.2 多屬性匹配
    示例: tree.xpath(’//div[@class=“item” and @name=“test”]/text()’)
    2.1 單屬性多值匹配
    示例: tree.xpath(’//div[contains(@class, “dc”)]/text()’)
    3.按序選擇:
    3.1 索引定位: 從1開始(牢記, 牢記, 牢記)
    3.2 last()函數
    3.3 position()函數

    from lxml import etreetree = etree.parse('./x.html', etree.HTMLParser())# 1.根據節點名, 即nodename定位title標簽, 獲取標簽內文字 title_text = tree.xpath('//title/text()') print(title_text)# 2.根據節點屬性定位: 定位id為007的div標簽 div_007 = tree.xpath('//div[@id="007"]') print(div_007)# 3.示例直接子節點與子孫節點:/, // div_007_one = tree.xpath('//div[@id="007"]/text()') print(div_007_one) div_007_two = tree.xpath('//div[@id="007"]//text()') print(div_007_two)# 4.獲取a標簽的href屬性 a_href = tree.xpath('//div[@class="divtag"]/a/@href') print(a_href)# 4.多屬性定位: 根據class屬性和name屬性定位div標簽 div_two_attr = tree.xpath('//div[@class="c1" and @name="laoda"]/text()') print(div_two_attr)# 5.屬性多值定位: 定位所有class中有c1的div標簽 div_c1 = tree.xpath('//div[contains(@class, "c1")]')# 6.按序定位 li_first = tree.xpath('//div[@class="divtag"]/ul/li[1]/text()') # 定位第一個li標簽, 獲取其文本 print(li_first)li_last = tree.xpath('//div[@class="divtag"]/ul/li[last()]/text()') # 定位最后一個li標簽 print(li_last)li_daotwo = tree.xpath('//div[@class="divtag"]/ul/li[last()-1]/text()') # 定位倒數第二個li標簽 print(li_daotwo)li_qianthree = tree.xpath('//div[@class="divtag"]/ul/li[position()<4]/text()') # 定位前三個li標簽 print(li_qianthree)

    3、案例: 豆瓣電影的相關信息

    import requests from lxml import etreeurl = 'https://movie.douban.com/chart' headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' }res = requests.get(url=url, headers=headers) tree = etree.HTML(res.text) td_list = tree.xpath('//tr[@class="item"]/td[2]') # print(td_list) for td in td_list:title = td.xpath('./div/a//text()')produce = td.xpath('./div/p/text()')score = td.xpath('./div/div/span[2]/text()')comment_num = td.xpath('./div/div/span[3]/text()')print(1111111111111111111111111111111111111111111)print(title)print(produce)print(score)print(comment_num)print(2222222222222222222222222222222222222222222) 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的xpath解析库的语法及使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。