2

我想在下面的html中提取单词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>'>]

但不能从中得到白色这个词。

4

2 回答 2

0

尝试以下几行:

from scrapy.selector import Selector

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

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

这应该得到你想要的。

于 2015-02-27T06:09:34.593 回答
0

selectHtmlXPathSelector实例上的方法返回XPathSelectorList对象 - 基本上它是一个 PythonXPathSelector对象列表(几乎没有其他方法)。

为了从HtmlXPathSelector对象中获取文本,您应该将 xpath 更改为 gettext()和 callextract()方法:

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

希望有帮助。

于 2013-07-14T05:28:26.657 回答