xpath解析库的语法及使用
生活随笔
收集整理的這篇文章主要介紹了
xpath解析库的语法及使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1、xpath解析庫
- 2、xpath語法
- 3、案例: 豆瓣電影的相關信息
1、xpath解析庫
# Xpath解析庫介紹:數據解析的過程中使用過正則表達式, 但正則表達式想要進準匹配難度較高, 一旦正則表達式書寫錯誤, 匹配的數據也會出錯.網頁由三部分組成: HTML, Css, JavaScript, HTML頁面標簽存在層級關系,即DOM樹, 在獲取目標數據時可以根據網頁層次關系定位標簽, 再獲取標簽的文本或屬性.xpath解析庫解析數據原理:
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()函數
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解析库的语法及使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爬虫的基本知识第一个请求requests
- 下一篇: BeautifulSoup库使用