在scrapy上使用xpath在类中提取字符串

时间:2013-07-13 22:57:59

标签: python xpath scrapy

我想在html

之后的de中提取单词WHITE
<p class="current">(WHITE)</p>

我正在使用python-scrapy,它只能用Xpath提取。使用chrome,我得到xpath:

//*[@id="addToCart_pdp"]/div[3]/div[1]/p

使用scrapy我得到了

 hxs.select('//*[@id="addToCart_pdp"]/div[3]/div[1]/p')
 >> [<HtmlXPathSelector xpath='//*[@id="addToCart_pdp"]/div[3]/div[1]/p' data=u'<p class="current"></p>'>]

但是不能从中获得白色字样。

2 个答案:

答案 0 :(得分:0)

HtmlXPathSelector实例上的

select方法返回XPathSelectorList对象 - 基本上它是XPathSelector个对象的python列表(几乎没有其他方法)。

要从HtmlXPathSelector对象获取文本,您应该更改xpath以获取text()并调用extract()方法:

text = hxs.select('//*[@id="addToCart_pdp"]/div[3]/div[1]/p/text()').extract()[0]

希望有所帮助。

答案 1 :(得分:0)

请尝试以下几行:

from scrapy.selector import Selector

然后在你的请求回调函数内(函数名称将解析在一个蜘蛛内)添加以下两行:

sel = Selector(response)
print sel.xpath("//p[@class='current']//text()").extract()

这应该是你想要的。

相关问题