xpath在python的爬蟲學習中,起著舉足輕重的地位,對比正規表示式 re兩者可以完成同樣的工作,實現的功能也差不多,但xpath明顯比re具有優勢,在網頁分析上使re退居二線。
xpath介紹:
是什麼? 全稱為xml path language 一種小型的查詢語言
說道xpath是門語言,不得不說它所具備的優點:
1) 可在xml中查詢資訊
2) 支援html的查詢
3) 通過元素和屬性進行導航
python開發使用xpath條件:
由於xpath屬於lxml庫模組,所以首先要安裝庫lxml,具體的安裝過程可以檢視部落格,包括easy_install 和 pip 的安裝方法。
xpath的簡單呼叫方法:
from lxml import etree
selector=etree.html(原始碼) #將原始碼轉化為能被xpath匹配的格式
selector.xpath(表示式) #返回為一列表
xpath的使用方法:
首先講一下xpath的基本語法知識:
四種標籤的使用方法
1) // 雙斜槓 定位根節點,會對全文進行掃瞄,在文件中選取所有符合條件的內容,以列表的形式返回。
2) / 單斜槓 尋找當前標籤路徑的下一層路徑標籤或者對當前路標籤內容進行操作
3) /text() 獲取當前路徑下的文字內容
4) /@***x 提取當前路徑下標籤的屬性值
5) | 可選符 使用|可選取若干個路徑 如//p | //div 即在當前路徑下選取所有符合條件的p標籤和div標籤。
6) . 點 用來選取當前節點
7) .. 雙點 選取當前節點的父節點
另外還有starts-with(@屬性名稱,屬性字元相同部分),string(.)兩種重要的特殊方法後面將重點講。
利用例項講解xpath的使用:
from lxml import etree
html="""
lang="en">
測試title>
content=selector.xpath('//div[@id="content"]/ul[@id="ul"]/li/text()') #這裡使用id屬性來定位哪個div和ul被匹配 使用text()獲取文字內容
for i in content:
print i
#輸出為
no.1
no.2
no.3
con=selector.xpath('//a/@href') #這裡使用//從全文中定位符合條件的a標籤,使用「@標籤屬性」獲取a便簽的href屬性值
for each in con:
print each
#輸出結果為:
con=selector.xpath('/html/body/div/a/@title') #使用絕對路徑定位a標籤的title
con=selector.xpath('//a/@title') #使用相對路徑定位 兩者效果是一樣的
print len(con)
print con[0]con[1]
#輸出結果為:
258 csdn
介紹xpath的特殊用法:
1) starts-with 解決標籤屬性值以相同字串開頭的情況
舉例說明
from lxml import etree
html="""
aaabac
"""selector=etree.html(html)
content=selector.xpath('//div[starts-with(@id,"a")]/text()') #這裡使用starts-with方法提取div的id標籤屬性值開頭為a的div標籤
for each in content:
print each
#輸出結果為:
aaab
ac
2) string(.) 標籤套標籤
html="""
left
right
east
west
"""#下面是沒有用string方法的輸出
sel=etree.html(html)
con=sel.xpath('//div[@id="a"]/text()')
for i in con:
print i #輸出內容為left west
data=sel.xpath('//div[@id="a"]')[0]
info=data.xpath('string(.)')
content=info.replace('\n','').replace(' ','')
for i in content:
print i #輸出為 全部內容
xpath提供的幾個特殊的方法:
xpath中需要取的標籤如果沒有屬性,可以使用text(),posision()來識別標籤。
舉兩個簡單的例子:
from lxml import etree
html="""
hello
hhehe
"""sel=etree.html(html)
con=sel.xpath('//div[text()="hello"]/p/text()')
print con[0]
#h
這裡使用text()的方法來判別是哪個div標籤
from lxml import etree
html="""
hello
hjihehe
"""sel=etree.html(html)
con=sel.xpath('//div[text()="hello"]/p[posision()=2]/text()')
print con[0]
#j
另外,在xpath中可以使用多重過濾方法尋找標籤,例如ul[3][@id=」a」] 這裡使用來尋找第三個ul標籤 並且它的id屬性值為a
獲取xpath的方式有兩種:
1) 使用以上等等的方法通過觀察找規律的方式來獲取xpath
2) 使用chrome瀏覽器來獲取 在網頁中右擊->選擇審查元素(或者使用f12開啟) 就可以在elements中檢視網頁的html標籤了,找到你想要獲取xpath的標籤,右擊->copy xpath 就已經將xpath路徑複製到了剪下板。
就總結了這麼多,以後再有學習會定期補充
python爬蟲XPath學習
xpath簡介和基本使用 1.前言 之前爬蟲的時候沒有用過xpath,就是沒用過lxml這個包,遇到json格式網頁我用的json.loads html格式用的beautifulsoup裡面有find和find all函式查詢標籤之類的。但是xpath在爬蟲裡面也算乙個比較重要的工具,當然要學習啦。...
python 爬蟲(XPATH使用)
xpath xml path language 是一門在xml文件中查詢資訊的語言,可用來在xml文件中對元素和屬性進行遍歷。w3school官方文件 pip install lxml 如果出現網路延遲,可使用清華源進行安裝匯入兩種匯入方式 第一種 直接匯入from lxml import etre...
python爬蟲學習 xpath
1.例項化乙個etree的物件,且需要將被解析的頁面原始碼資料載入到該物件中。2.呼叫etree物件中的xpath方法結合著xpath表示式實現標籤的定位和內容的捕獲。pip install lxml1.將本地的html文件中的原始碼資料載入etree物件中 etree.parse filepath...