天天看點

python etree_【Python】爬蟲之使用etree進行xpath元素定位

作業系統:macOS Mojave

python版本:python3.7

依賴庫:requests、etree

關于依賴庫的安裝,建議使用anaconda+pycharm的組合方式,每個依賴庫的安裝又會基于其他依賴包的安裝,這時候anaconda的作用便是自動幫你下載下傳安裝對應的依賴,不需要人工去查找,類似于java maven的三方庫管理,python常見IDE就是pycharm了。pycharm怎麼關聯anaconda的依賴包呢?請看下圖設定:

0-0、打開pycharm-preferences,進入設定

python etree_【Python】爬蟲之使用etree進行xpath元素定位

0-1、選擇anaconda所在的python執行檔案

python etree_【Python】爬蟲之使用etree進行xpath元素定位

1、網站源代碼擷取及轉換

import requests

from lxml import etree

r=requests.get("http://www.baidu.com")

#print ("狀态碼:",r.status_code)

#print ("網站源代碼",r.text)

#print ("頭部請求",r.headers)

html = etree.HTML(r.text) # 調用HTML類進行初始化

etreeResult = etree.tostring(html) # 将其轉化為字元串類型,etree類型

strResult=etreeResult.decode('utf-8') #轉化為utf-8編碼格式,此時已是str類型

2、節點、屬性值、内容的擷取

文法如下:

python etree_【Python】爬蟲之使用etree進行xpath元素定位

示例代碼:

import requests

from lxml import etree

r=requests.get("http://www.baidu.com")

html = etree.HTML(r.text) # 調用HTML類進行初始化

resultAll = html.xpath('//*') #選取所有節點

#print("擷取所有節點:",resultAll)

resultDivAll = html.xpath('//div') #選取div子孫節點

#print("擷取div所有節點:",resultDivAll)

resultDiv_img = html.xpath('//div/img') #選取div下img節點

#print("擷取div節點下img節點:",resultDiv_img)

resultDiv_imgSrc = html.xpath('//div/img/@src') #擷取div_img的src屬性值

print("擷取div節點下img的src值:",resultDiv_imgSrc)

對應輸出的值:

python etree_【Python】爬蟲之使用etree進行xpath元素定位