python 使用lxml中的xpath 和 scrpay中的xpath的區別


1.scrapy中的xpath:直接是response.xpath 就是可以,例如:

result = response.xpath('//span[@class="packaging-des"]/text()').extract() #extract_first() 等同於 extract()[0]

倘若不加 extract() 的話 就只能得到html源代碼了,而得不到你想要的文本,所以得加上。

 

2.lxml中的xpath,首先需要導入個etree包才能使用xpath

from lxml import etree

然后:

html = etree.HTML(wb_data) #wb_data 是你請求獲取到的網頁源代碼,例如使用requests.get(url).text 獲取到的源代碼
result = html.xpath('//span[@class="packaging-des"]/text()')#這樣就可以獲取跟上面一樣的文本了,不需要使用extract()

但是有時候咱們不想單純的直接獲取后面的text文本,或許你想獲取html源代碼,那如何辦呢?

html.xpath('//span[@class="packaging-des"]') 這樣獲取嗎?一開始我是這樣想的,結果得到的是Element對象。
那我們如何把Element對象轉變成html代碼呢?
主要思想是利用xpath獲取到指定區域的Element對象,然后再將Element對象傳給etree.tostring(),即可得到指定區域的html代碼
示例:
result = html.xpath('//span[@class="packaging-des"]')
div_str=etree.tostring(result[0],encoding='utf-8')

成功獲取到了指定區域的html代碼。

參考鏈接:https://www.cnblogs.com/just-do/p/9778941.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM