scrapy:如何跳过不响应的网址?

时间:2015-10-15 08:02:42

标签: python-2.7 scrapy

scrapy抓取了一些页面,但每次爬行器停止爬行其中一个时,我发现原因是:有些网址没有响应,用浏览器打开网址,有注意到,是空白,而不是404.这导致爬虫停止。我该怎么办?英语不是我的母语,我不确定我是否清楚地描述它。

添加一些说明: 爬虫是由scrapy + redis + mongodb编写的。大约有70个列表页面,每个列表页面都有10个url到详细页面,因此,正确的总页面大约是70 * 10 = 700,但是当页面是大约400,爬虫不能再获取任何页面,信息是:

2015-10-14 22:28:13 [scrapy] INFO: Crawled 1192 pages (at 76 pages/min), scraped 443 items (at 35 items/min)
2015-10-14 22:29:13 [scrapy] INFO: Crawled 1192 pages (at 0 pages/min), scraped 443 items (at 0 items/min)

“已抓取1192页”:有一些ajax请求和列表页面请求,因此页面超过700。 并且我发现导致爬虫停止的原因是有一些网址没有响应。用浏览器打开网址,有注意,是空白,不是404.and,这些页面没有响应,我想忽略它们,继续抓住下一页。

@Shekhar Samanta说: “使用: -

try:
    your line to make http requests
except:
    pass

借助此功能,您的抓取工具不会中断。“ 所以,这是关于此爬虫的http请求的代码,我不知道如何在我的代码中添加“try except”:

def parse(self,response):
    url_list = response.xpath('//div[@class="title"]/a/@href')
    for url in url_list:
        fullurl=response.urljoin(url.extract())
        yield Request(fullurl, callback=self.parseContent)

def parseContent(self, response):
    for sel in response.xpath('//div[@class="content"]'):
        item = ArticlespiderItem()
        item['articleUrl']=response.url
        item['aticleTitle']=sel.xpath('div[1]/div[1]/h3/text()').extract()
        yield item

1 个答案:

答案 0 :(得分:1)

使用: -

grails:
    web:
        servlet:
            path: /*

借助此功能,您的抓取工具不会中断。