2

次のhtmlでWHITEという単語を抽出したい

<p class="current">(WHITE)</p>

私はpython-scrapyを使用していますが、Xpathでのみ抽出できます。クロムを使用して、xpath を取得します。

//*[@id="addToCart_pdp"]/div[3]/div[1]/p

スクレイピーを使用すると、

 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>'>]

しかし、ここからWHITEという言葉を得ることができません。

4

2 に答える 2

0

次の行を試してください。

from scrapy.selector import Selector

次に、リクエスト コールバック関数内 (関数名はスパイダー内で解析されます) に次の 2 行を追加します。

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

これはあなたが望むようになるはずです。

于 2015-02-27T06:09:34.593 に答える
0

selectHtmlXPathSelectorインスタンスのメソッドは、 XPathSelectorListオブジェクトを返します。基本的には、オブジェクトの Python リストXPathSelectorです (追加のメソッドはほとんどありません)。

オブジェクトからテキストを取得するにはHtmlXPathSelector、xpath を get メソッドに変更してメソッドtext()を呼び出す必要があります。extract()

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

それが役立つことを願っています。

于 2013-07-14T05:28:26.657 に答える