2
回答
scrapy遇到重复页面就停止对指定url的递归抓取
终于搞明白,存储TCO原来是这样算的>>>   

标题的表述可能比较难理解,就是我在我要抓取dhgate.com的全部衣服类商品的数据,但在递归抓取下一页链接时遇到点问题。

比如所抓取这个商品展示页下的列出来的商品链接,以及下一页的的链接,最终获得这个分类的商品的数据。

但这个网站有个bug,比如说上面wholesale的分类,当下一页的链接到200的时候,也就是url后面的分页数字>=199的(c014031016001-199.html)时候,商品展示页的内容就会不和199页的完全一样,但是分页却可以继续!!!!,我的小spider会一直抓取下一页的链接,但却不能再抓取到新的商品,不陷入无限循环。

知道scrapy的DEPTH_LIMIT可以设置爬取的深度,但并不是每个分类页都只有199个商品页,所有觉得这不是最好的解决方法。

对scrapy的判重机制不是很了解,觉得可以从这方面入手,还请有经验的大神给点意见。

这是爬虫的一个test文件,

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.loader import ItemLoader
from scrapy.selector import Selector
from cooka.items import DmozItem
from scrapy.http import  Request
#import sys
#sys.stdout=open('output.txt','w') 
class OtherSpider(CrawlSpider): 
    name = "test" 
    allowed_domains = ["dhgate.com"] 
    start_urls = ["http://www.dhgate.com/wholesale/casual-dresses/c014031016001-199.html",
    ]
    link_extractor = {
        'next_page':  SgmlLinkExtractor(allow=('/who.*?.html'),restrict_xpaths=('//a[@class="next"]')),
        'pro_link': SgmlLinkExtractor(allow=('/product/')),
    }
     
    def parse(self, response):
        for link in self.link_extractor['next_page'].extract_links(response):
            yield Request(url = link.url, callback=self.parse)
        for link in self.link_extractor['pro_link'].extract_links(response):
            yield Request(url = link.url, callback=self.myparse)


    def myparse(self, response):
        hxs = Selector(response)
        items =[]
        item = DmozItem()
        item['title'] = hxs.xpath('//h1[@itemprop="name"]/text()').extract()
        item['link'] =  response.url
        item['desc']  = hxs.xpath('//h2[@class="shortdes"]/text()').extract()
        item['cate']  = hxs.xpath('//div[@class="wholesale-resources"]/h2/text()').extract()
        items.append(item)
        return items



运行结果:

前期可以抓到数据:

后期就只抓链接了,不过也可以确定scarp是有进行判重的。

希望得到一种解决方案,是在遇到有重复页面时候,就停止当前url的递归抓取,因为需求是要抓取多个目录的商品,希望高人给点指导,先谢过了。

<无标签>
举报
qx明
发帖于2年前 2回/4K+阅
顶部