爬蟲 css選擇器 和 xpath選擇器

2022-06-20 16:51:13 字數 2735 閱讀 8269

ret=soup.select('#my_p')

ret=soup.select('body p') # 子子孫孫

ret=soup.select('body>p') # 直接子節點(兒子)

ret=soup.select('body>p')[0].text # 直接子節點(兒子)

# xpath: xpath 是一門在 xml 文件中查詢資訊的語言

/ :從根節點擊取。

// :不管位置,直接找

/@屬性名

/text()

doc='''

name: my image 1

name: my image 2

name: my image 3

name: my image 4

name: my image 5

test

name: my image 6

'''from lxml import etree

html=etree.html(doc)

# html=etree.parse('search.html',etree.htmlparser())

# 1 所有節點

a=html.xpath('//*')

# 2 指定節點(結果為列表)

a=html.xpath('//head')

# 3 子節點,子孫節點

a=html.xpath('//div/a')

# 4 父節點

a=html.xpath('//body//a[1]/..')

a=html.xpath('//body//a[1]/parent::*')

# 5 屬性匹配

a=html.xpath('//body//a[@href="image1.html"]')

# 6 文字獲取(重要) /text() 取當前標籤的文字

a=html.xpath('//body//a[@href="image1.html"]/text()')

a=html.xpath('//body//a/text()')

# 7 屬性獲取 @href 取當前標籤的屬性

a=html.xpath('//body//a/@href')

# 8 屬性多值匹配

# a 標籤有多個class類,直接匹配就不可以了,需要用contains

a=html.xpath('//body//a[@class="li"]')

a=html.xpath('//body//a[contains(@class,"li")]')

# 9 多屬性匹配

a=html.xpath('//body//a[contains(@class,"li") or @name="items"]')

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

# 10 按序選擇

# # 注意從1 開始取(不是從0)

a=html.xpath('//body//a[1]/@href')

a=html.xpath('//a[2]/text()')

# 取最後乙個

a=html.xpath('//a[last()]/@href')

# 位置小於3的

a=html.xpath('//a[position()<3]/@href')

# 倒數第二個

a=html.xpath('//a[last()-2]/@href')

# 11 節點軸選擇

# ancestor:祖先節點

# 使用了* 獲取所有祖先節點

a=html.xpath('//a/ancestor::*')

# # 獲取祖先節點中的div

a=html.xpath('//a/ancestor::div')

# attribute:屬性值

a=html.xpath('//a[1]/attribute::*')

a=html.xpath('//a[1]/@aa')

# child:直接子節點

a=html.xpath('//a[1]/child::*')

a=html.xpath('//a[1]/child::img/@src')

# descendant:所有子孫節點

a=html.xpath('//a[6]/descendant::*')

a=html.xpath('//a[6]/descendant::h5/text()')

# following:當前節點之後所有節點(兄弟節點和兄弟內部的節點)

a=html.xpath('//a[1]/following::*')

a=html.xpath('//a[1]/following::*[1]/@href')

# following-sibling:當前節點之後同級節點(只找兄弟)

a=html.xpath('//a[1]/following-sibling::*')

a=html.xpath('//a[1]/following-sibling::a')

a=html.xpath('//a[1]/following-sibling::*[2]')

a=html.xpath('//a[1]/following-sibling::*[2]/@href')

//查詢標籤,bs4的find, css,xpath(通用的)

常用xpath選擇器和css選擇器總結

表示式說明 article 選取所有article元素的所有子節點 article 選取根元素article article a 選取所有屬於article的子元素的a元素 div 選取所有div子元素 不論出現在文件任何地方 article div 選取所有屬於article元素的後代的div元素...

爬蟲常用Xpath和CSS3選擇器對比

css是來配合html工作的,和xpath對比起來,css選擇器通常都比較短小,但是功能不夠強大。css中的空白符 和xpath的 都表示當前元素的所有後代 子孫 元素。對於元素 標籤 的操作,xpath和css基本上都能通過各自的語法達到相同的動作,並且爬蟲中使用的都是一些相對簡潔明瞭的操作。結果...

爬蟲之xpath選擇器的使用

xpath 是一門在 xml 文件中查詢資訊的語言。xpath xpath 是一門在 xml 文件中查詢資訊的語言 從根節點擊取。不管位置,直接找 屬性名 text 會複製 pip3 install lxml doc name my image 1 name my image 2 name my i...