Python Scrapy并不总是从网站下载数据

时间:2013-11-29 15:55:40

标签: python request response scrapy sites

Scrapy用于解析html。我的问题是为什么有时我的背部scrapy会回应我想要的,但有时候不会回复。这是我的错吗?这是解析函数的方式。

class AmazonSpider(BaseSpider):
    name = "amazon"
    allowed_domains = ["amazon.org"]
    start_urls = [
       "http://www.amazon.com/s?rh=n%3A283155%2Cp_n_feature_browse-bin%3A2656020011"
   ]

def parse(self, response):
            sel = Selector(response)
            sites = sel.xpath('//div[contains(@class, "result")]')
            items = []
            titles = {'titles': sites[0].xpath('//a[@class="title"]/text()').extract()}
            for title in titles['titles']:
                item = AmazonScrapyItem()
                item['title'] = title
                items.append(item)
            return items

1 个答案:

答案 0 :(得分:0)

我相信你只是没有使用最合适的XPath表达式。

亚马逊的HTML有点混乱,不是很统一,因此解析起来不是很容易。但经过一些实验,我可以使用以下parse函数提取几个搜索结果的所有12个标题:

def parse(self, response):
    sel = Selector(response)
    p = sel.xpath('//div[@class="data"]/h3/a')
    titles = p.xpath('span/text()').extract() + p.xpath('text()').extract()
    items = []
    for title in titles:
        item = AmazonScrapyItem()
        item['title'] = title
        items.append(item)
    return items

如果您关心结果的实际顺序,上述代码可能不合适,但我认为情况并非如此。