0

对不起,如果这是一个愚蠢的问题,但我到处搜索,找不到任何有用的东西。我正在尝试使用 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

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

4

1 回答 1

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');"]
于 2013-07-27T04:35:36.720 回答