我想在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
但我只得到一个链接而不是所有产品的网址。
答案 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()