Scrapy Python Craigslist 爬虫

4 投票
1 回答
3619 浏览
提问于 2025-04-17 19:22

我正在尝试使用Scrapy从Craigslist网站上抓取分类信息,以提取正在出售的物品。

我可以提取日期、帖子标题和帖子链接,但在提取价格时遇到了问题。

奇怪的是,当前的代码可以提取所有的价格,但当我去掉价格部分前面的//时,价格字段却显示为空。

有人能帮我看看下面的代码吗?

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

1 个回答

2

itempp 似乎是在另一个元素 itempnr 里面。也许你可以试试把 //span[@class="itempp"]/text() 改成 span[@class="itempnr"]/span[@class="itempp"]/text(),这样可能就能正常工作了。

撰写回答