pip install lxml
獲取根目錄下的html標籤物件:
importrequests
from lxml import
etree
res = requests.get("
")html = etree.html(res.content.decode('
utf-8'))
html_data = html.xpath('
/html
') #
獲取根目錄下的html標籤
print(html_data) #
是乙個列表,包含乙個html標籤物件
表示式描述
nodename
選取此節點的所有子節點。
/從根節點擊取。
//從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置。
.選取當前節點。
..選取當前節點的父節點。
@選取屬性。
例子:
html_data = html.xpath('/html
') #
選擇根目錄下的html標籤
html_data = html.xpath('
/html/body
') #
選擇html標籤下的body標籤
html_data = html.xpath('
//div
') #
選擇所有div標籤(不關心位置)
html_data = html.xpath('
/html//div
') #
選擇html標籤下的所有div標籤(不關心位置)
html_data = html.xpath('
//@src
') #
選擇所有src屬性的值
注意,返回的結果都是列表,要注意判斷列表中元素的個數是否為0。
路徑表示式
結果/bookstore/book[1]
選取屬於 bookstore 子元素的第乙個 book 元素。
/bookstore/book[last()]
選取屬於 bookstore 子元素的最後乙個 book 元素。
/bookstore/book[last()-1]
選取屬於 bookstore 子元素的倒數第二個 book 元素。
/bookstore/book[position()<3]
選取最前面的兩個屬於 bookstore 元素的子元素的 book 元素。
//title[@lang]
選取所有擁有名為 lang 的屬性的 title 元素。
//title[@lang='eng']
選取所有 title 元素,且這些元素擁有值為 eng 的 lang 屬性。
/bookstore/book[price>35.00]
選取 bookstore 元素的所有 book 元素,且其中的 price 元素的值須大於 35.00。
/bookstore/book[price>35.00]//title
選取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值須大於 35.00。
例子:
html_data = html.xpath('/html/body/div[1]
') #
獲取body標籤下子標籤中第乙個div標籤(注意index從1開始)
html_data = html.xpath('
/html/body/div[last()]
') #
獲取body標籤下子標籤中最後乙個div標籤
html_data = html.xpath('
/html/body/div[last()-1]
') #
獲取body標籤下子標籤中倒數第二個div標籤
html_data = html.xpath('
/html/body/div[position()<3]
') #
獲取body標籤下子標籤中idx小於3的兩個div標籤
html_data = html.xpath('
/html/body/div[@class]
') #
獲取body標籤下子標籤中所有擁有class屬性的div標籤
html_data = html.xpath('
') #
萬用字元描述
*匹配任何元素節點。
@*匹配任何屬性節點。
node()
匹配任何型別的節點。
路徑表示式
結果/bookstore/*
選取 bookstore 元素的所有子元素。
//*選取文件中的所有元素。
//title[@*]
選取所有帶有屬性的 title 元素。
路徑表示式
結果//book/title | //book/price
選取 book 元素的所有 title 和 price 元素。
//title | //price
選取文件中的所有 title 和 price 元素。
/bookstore/book/title | //price
選取屬於 bookstore 元素的 book 元素的所有 title 元素,以及文件中所有的 price 元素。
軸可定義相對於當前節點的節點集。
軸名稱結果
ancestor
選取當前節點的所有先輩(父、祖父等)。
ancestor-or-self
選取當前節點的所有先輩(父、祖父等)以及當前節點本身。
attribute
選取當前節點的所有屬性。
child
選取當前節點的所有子元素。
descendant
選取當前節點的所有後代元素(子、孫等)。
descendant-or-self
選取當前節點的所有後代元素(子、孫等)以及當前節點本身。
following
選取文件中當前節點的結束標籤之後的所有節點。
following-sibling
選取當前節點之後的所有兄弟節點
namespace
選取當前節點的所有命名空間節點。
parent
選取當前節點的父節點。
preceding
選取文件中當前節點的開始標籤之前的所有節點。
preceding-sibling
選取當前節點之前的所有同級節點。
self
選取當前節點。
xpath中的軸是跟在"/"後的乙個表述字元,預設的"/"相當於"/child":
/html/body/div#相當於
/html/body/child::div
我們預設使用"/"獲取的都是子節點。也可以使用其他的軸來獲取不同關係的節點。例如:
html_data = html.xpath('/html/body/div/ancestor::*
') #
獲取/html/body/div節點的所有先輩節點,[, ]
html_data = html.xpath('/html/body/div/ancestor-or-self::*
') #
獲取/html/body/div節點的所有先輩節點以及自己(這裡有3個div)
#[, , , , ]
其他軸的使用方法以此類推。
html_data = html.xpath('//div[starts-with(@class,"international")]
') #
class屬性以international開頭
html_data = html.xpath('
') #
html_data = html.xpath('
') #
在使用這些字串處理函式時,要注意支援的xpath版本,有可能這些函式會報錯,例如python在使用lxml時,ends-with不工作。
Python自學爬蟲
解除安裝前面 這是乙個半自動爬蟲,也就是手動的比較多 也是個人學習效果展示 如果對看到的人有幫助 那再好不過了 匯入正規表示式模組和csv模組 import re import csv 讀取檔案 with open source.txt r encoding gbk as f all str f.r...
杭州自學python爬蟲 自學PYTHON爬蟲
response urllib2.urlopen urlopen url,data,timeout 第乙個引數url即為url,第二個引數data是訪問url時要傳送的資料,第三個timeout是設定超時時間。第二三個引數是可以不傳送的,data預設為空none,timeout預設為 socket....
python免費自學爬蟲 python爬蟲學習
近日,學習爬蟲基礎,自己寫了乙個小指令碼。目標 每天晚上定時傳送第二天的工作專案到qq郵箱。目的 頭天晚上得到第二天的工作計畫,好決定頭天晚上是否能喝酒過量 是否能麻將通宵等等等等。哈哈!思路 1 從停電申請系統,統計出第二日的工作專案。2 每天晚上定時傳送該專案到qq郵箱。要解決的主要問題 1 從...