python爬蟲中 lxml etree的相關使用

2021-09-17 23:24:54 字數 2212 閱讀 7713

import requests

from lxml import etree

url = ''

html = requests.get(url)

html = etree.html(html.text) #初始化生成乙個xpath解析物件

items = html.xpath('//div[contains(@class,"data")]/span//text()')

for i in items:

print(i)

下面是表示式的常用用法:

表示式描述

nodename

選取此節點的所有子節點

/從當前節點擊取直接子節點

//從當前節點擊取子孫節點

.選取當前節點

..選取當前節點的父節點

@選取屬性

*萬用字元,選擇所有元素節點與元素名

@*選取所有屬性

[@attrib]

選取具有給定屬性的所有元素

[@attrib='value']

選取給定屬性具有給定值的所有元素

[tag]

選取所有具有指定元素的直接子節點

[tag='text']

選取所有具有指定元素並且文字內容是text節點

html.xpath('//li')   #獲取所有子孫節點的li節點

html.xpath('//li/a') #獲取所有子孫節點的li節點下的所有直接a節點

result=html.xpath('//li[@class="item"]') 匹配class="item"的li

html.xpath('//a[@href="tab"]/../@class') 獲取a的父節點的class值

html.xpath('//a[@href="tab"]/parent::*/@class')獲取a的父節點的class值

html.xpath('//li[@class="item"]/a/text()') #獲取a節點下的內容

html.xpath('//li[@class="item"]//text()') #獲取li下所有子孫節點的內容

html.xpath('//li/a/@href') #獲取a的href屬性

html.xpath('//li//@href') #獲取所有li子孫節點的href屬性

按熟悉選擇

html.xpath('//li[@class="aaa"]/a') 只能匹配class僅為'aaa'的節點

html.xpath('//li[contains(@class,"aaa")]/a') 匹配class有'aaa'的節點

#and or 的用法

html.xpath('//li[@class="aaa" and @name="fore"]/a/text()')

html.xpath('//li[contains(@class,"aaa") and @name="fore"]/a/text()')

#按順序選擇

html.xpath('//li[1]/a/text()') #獲取第乙個li下a的內容

html.xpath('//li[last()]/a/text()') #獲取最後乙個li下a的內容

html.xpath('//li[position()>2 and position()<4]/a/text()') #獲取大於2小於4的

html.xpath('//li[last()-2]/a/text()') #獲取倒數第三個

#xpath提供了很多節點擊擇方法,包括獲取子元素、兄弟元素、父元素、祖先元素等,示例如下:

html.xpath('//li[1]/ancestor::*') #獲取所有祖先節點

html.xpath('//li[1]/ancestor::div') #獲取div祖先節點

html.xpath('//li[1]/attribute::*') #獲取所有屬性值

html.xpath('//li[1]/child::*') #獲取所有直接子節點

html.xpath('//li[1]/descendant::a') #獲取所有子孫節點的a節點

html.xpath('//li[1]/following::*') #獲取當前子節之後的所有節點

html.xpath('//li[1]/following-sibling::*') #獲取當前節點的所有同級節點

內容參考部落格:

Python 爬蟲中遇到的反爬蟲問題

源 一般會有下面幾種限制 1 一定時間內單個ip訪問次數,乙個正常使用者訪問 除非是隨意的點著玩,否則不會在一段持續時間內過快訪問乙個 持續時間也不會太長,我們可以採用大量不規則 ip形成乙個執行緒池,隨機從 池中選擇 模擬訪問。有兩種,透明 和匿名 2 一定時間內單個賬號訪問次數,如果乙個人一天2...

python 爬蟲中的extract

ul class list li 123 li li abc li ul 1xx.xpath ul class list li xx是html文件 xpath解析返回乙個解析器列表 2 xx.xpath ul class list li extract output 123 abc extract使...

python 爬蟲中的extract

1xx.xpath ul class list li xx是html文件 xpath解析返回乙個解析器列表 2xx.xpath ul class list li extract output 123 abc extract使提取內容轉換為unicode字串,返回資料型別為list 3xx.xpath...