4

Scrapyを使用して Craigslistの広告をスクレイピングして、販売中のアイテムを抽出しようとしています。

日付、投稿のタイトル、投稿の URLを抽出できますが、価格の抽出に問題があります。

何らかの理由で、現在のコードはすべての価格を抽出しますが、価格範囲を検索する前に//を削除すると、価格フィールドは空として返されます。

誰かが以下のコードを確認して、私を助けてくれませんか?

from scrapy.spider import BaseSpider
    from scrapy.selector import HtmlXPathSelector
    from craigslist_sample.items import CraigslistSampleItem

    class MySpider(BaseSpider):
        name = "craig"
        allowed_domains = ["craigslist.org"]
        start_urls = ["http://longisland.craigslist.org/search/sss?sort=date&query=raptor%20660&srchType=T"]

def parse(self, response):
    hxs = HtmlXPathSelector(response)
    titles = hxs.select("//p")
    items = []
    for titles in titles:
        item = CraigslistSampleItem()
        item['date'] = titles.select('span[@class="itemdate"]/text()').extract()
        item ["title"] = titles.select("a/text()").extract()
        item ["link"] = titles.select("a/@href").extract()
        item ['price'] = titles.select('//span[@class="itempp"]/text()').extract()
        items.append(item)
    return items
4

1 に答える 1

2

itempp別の要素の内部にあるように見えますitempnr。に変更すると、おそらくうまくいくでしょ//span[@class="itempp"]/text()span[@class="itempnr"]/span[@class="itempp"]/text()

于 2013-03-17T01:34:04.623 に答える