2013-07-27 119 views
0

對不起,如果這是一個愚蠢的問題,但我到處搜索,找不到任何有用的東西。我正嘗試使用Scrapy從頁面中提取信息。該HTML看起來像這樣:XPath只選擇部分Href

<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

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');"] 
+0

太謝謝你了。 – user2624829