7

その点で、私はScrapyまたはpythonを使用することに比較的慣れていません。いくつかの異なるリンクから を抽出しようとしていますが、HTMLXPathSelector 式 (構文) の使用に問題があります。適切な構文について広範なドキュメントを調べましたが、まだ解決策を見つけていません。

「img src」を抽出しようとしているリンクの例を次に示します。

ページから img src url を抽出しようとしています

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector

class GeekSpider(BaseSpider):
    name = "geekS"
    allowed_domains = ["geek.com"]
    start_urls = ["http://www.geek.com/articles/gadgets/kindle-fire-hd-8-9-on-sale-for-50-off-today-only-20121210/"]

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        imgurl = hxs.select("//div[@class='article']//a/img/@src").extract()
        return imgurl

x.select ステートメントの構文は理解できたと思いますが、この構文/メソッドは初めてなのでよくわかりません。

これが私のitems.pyファイルです。基本的には、このためのスクレイピーチュートリアルに従いました。

from scrapy.item import Item, Field

class GeekItem(Item):
    imgsrc = Field()

明確にするために:私がやろうとしているのは、ページにある img src url を抽出することです。すでに把握しているすべての画像 src を抽出する必要はありません (はるかに簡単です)。

私はそれを絞り込み、img srcの特定のURLのみを抽出しようとしています。(このサイトの複数のページでこれを使用します)

どんな助けでも大歓迎です!

編集 - 更新されたコードgeek = geek() でいくつかの構文エラーが発生していたので、理解しやすく機能しやすいように少し変更しました

4

1 に答える 1

3

あなたの xpath 式はもっと似ているはずです。別のページ ( Amazon 配送センターの記事) でテストしたところ、10 個すべてのクリック可能な画像が返されました。

geek['imgsrc'] = x.select("//div[@class='article']//a/img/@src").extract()

他の問題を解決するには、GeekItem を GeekSpider コードにインポートする必要があります。

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from geekspider.items import GeekItem # I'm guessing the name of your project here

class GeekSpider(BaseSpider):
    name = "geekS"
    allowed_domains = ["geek.com"]
    start_urls = ["http://www.geek.com/articles/gadgets/kindle-fire-hd-8-9-on-sale-for-50-off-today-only-20121210/"]

    def parse(self, response):
        item = GeekItem()
        hxs = HtmlXPathSelector(response)
        item['imgsrc'] = hxs.select("//div[@class='article']//a/img/@src").extract()
        return item
于 2012-12-15T03:29:48.307 に答える