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 に答える