不能在python中使用scrapy刮取产品URL

时间:2013-10-26 14:15:28

标签: python web-scraping scrapy

我想在python中使用scrapy从链接“http://www.shopclues.com/diwali-mega-mall/hot-electronics-sale-fs/audio-systems-fs.html”中提取所有产品网址。以下是我用来执行此操作的功能:

def parse(self, response):
        print("hello");

        hxs = HtmlXPathSelector(response)
        sites = hxs.select('//div[@id="pagination_contents"]')
        items = []
        i=3
    for site in sites:
            item = DmozItem()
            item['link'] = site.select('div[2]/div['+str(i)+']/a/@href').extract()
            i=int(i)+1;
            print i
            items.append(item)
    return items

每个产品div的x路径是:// div [@ id =“pagination_contents”] / div [2] / div ['+ str(i)+'] / a / @ href

但我只得到一个链接而不是所有产品的网址。

1 个答案:

答案 0 :(得分:1)

我认为您的问题是hxs.select('//div[@id="pagination_contents"]')只返回一个结果,然后您只在循环中进行一次迭代。

您可以选择包含<div>的所有以下<a>元素,并循环显示这些元素:

sites = hxs.select('//div[@id="pagination_contents"]/div[2]/div[a]')
for site in sites:
    ## This loop will run 33 times in my test.
    ## Access to each link:
    item['link'] = site.select('./a[2]/@href').extract()