爬蟲 xpath學習

2021-10-24 06:04:13 字數 1576 閱讀 7855

xpath解析:最常用且最便捷高效的一種解析方式,具有通用性

xpath解析的原理:

一、例項化乙個etree物件,且需要將被解析的頁面原始碼資料載入到該物件中

二、呼叫etree物件中的xpath方法結合著xpath表示式實現標籤定位和內容的捕獲

環境的安裝:pip install lxml

如何例項化乙個etree物件:from lxml import etree

一、將本地中的html文件中的原始碼資料載入到etree物件中:etree.parse(filepath)

二、可以將從網際網路上獲取的原始碼資料載入到該物件中:etree.html(『page_text』)

三、xpath(『xpath表示式』)

xpath表示式

/:表示的是從根節點開始定位,第乙個/表示從根節點開始定位,其餘/表示層級

//:表示多個層級,可以表示從任意位置開始定位

屬性定位://div[@class=「song」]、tag[@attrname=「attrvalue」]

索引定位://div[@class=「song」]/p[3] 索引從1開始

取文字:1./text() 獲取標籤中直系的文字內容 2.//text() 獲取標籤下所有的文字內容

取屬性:/@attrname ==>img/src 獲取屬性值

import requests

from bs4 import beautifulsoup

import re

from lxml import etree

headers =

if __name__ ==

"__main__"

:# 例項化好了乙個etree物件,且將被解析的原始碼載入到了該物件中

tree = etree.parse(

'test.html'

)# 傳入本地html

# 根據層級定位捕獲內容

# r = tree.xpath('/html/head/div') # 函式返回的是乙個列表,並不是title對應的html內容,而實乙個element型別的物件

# r = tree.xpath('/html//div')

# r = tree.xpath('//div') # 三個表示式對應的結果相同,//表示從任意位置開始定位

# r = tree.xpath('//div[@class="song"]') # 屬性定位,獲取class=song的乙個div標籤

# r = tree.xpath('//div[@class="song"]/p[3]') # 獲取點三個p標籤,索引從1開始

# r = tree.xpath('//div[@class="tang"]//li[5]/a/text')[0] # 獲取a標籤裡面的文字資料,只能獲取直系標籤裡的文字內容,如果文字存在於其子標籤,則無法獲取

# r = tree.xpath('//li[7]//text()') # 獲取標籤下所有的文字內容

r = tree.xpath(

'//div[@class="song"]/img/@src'

)# 獲取src所對應的屬性值

爬蟲xpath學習

xpath是在xml文件中搜尋內容的一門語言 html是xml的子集 xml 1野花遍地 1.23 臭 腐周 強 周芷若周杰倫 蔡依林惹了 胖胖陳胖胖不陳 from lxml import etree tree etree.xml xml result tree.xpath book name 表示...

python爬蟲XPath學習

xpath簡介和基本使用 1.前言 之前爬蟲的時候沒有用過xpath,就是沒用過lxml這個包,遇到json格式網頁我用的json.loads html格式用的beautifulsoup裡面有find和find all函式查詢標籤之類的。但是xpath在爬蟲裡面也算乙個比較重要的工具,當然要學習啦。...

python爬蟲學習 xpath

1.例項化乙個etree的物件,且需要將被解析的頁面原始碼資料載入到該物件中。2.呼叫etree物件中的xpath方法結合著xpath表示式實現標籤的定位和內容的捕獲。pip install lxml1.將本地的html文件中的原始碼資料載入etree物件中 etree.parse filepath...