XPath仅选择部分Href

时间:2013-07-27 04:11:05

标签: python xpath scrapy

很抱歉,如果这是一个愚蠢的问题,但我到处搜索,找不到任何有用的东西。我试图使用Scrapy从页面中提取信息。 HTML看起来像这样:

<a Href="JavaScript:ShowParts('1','58537','RP45%2C+RP60+Compactors+w%2FHatz+1D81S+Eng%2E');">RP45, RP60 Compactors w/Hatz 1D81S Eng.</a>

我希望所有内容都以Href =“之前和之前”开头;这是我的代码。

def parseEngines(self, response):
    hxs = HtmlXPathSelector(response)
    engines = hxs.select("//a/@href")
    print engines

当我打印引擎时,我应该得到这样的东西:

JavaScript:ShowParts('1','58537','RP45%2C+RP60+Compactors+w%2FHatz+1D81S+Eng%2E');

但我只得到这个:

JavaScript:ShowParts('1','58537','RP45%2

就是这样。为什么我只得到一半的字符串?

1 个答案:

答案 0 :(得分:1)

hxs.select("//a/@href")会返回HtmlXPathSelector个对象,而不是您想要的结果。并且对象的字符串表示形式未满。使用:

engines = hxs.select("//a/@href").extract()
print engines

你可以得到你想要的东西。演示:

>>> a = HtmlXPathSelector(text=s)
>>> a
<HtmlXPathSelector xpath=None data=u'<html><body><a href="JavaScript:ShowPart'>
>>> a.select("//a/@href")
[<HtmlXPathSelector xpath='//a/@href' data=u"JavaScript:ShowParts('1','58537','RP45%2">]
>>> a.select("//a/@href").extract()
[u"JavaScript:ShowParts('1','58537','RP45%2C+RP60+Compactors+w%2FHatz+1D81S+Eng%2E');"]