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
原文地址:https://www.cnblogs.com/fh-fendou/p/11040050.html