如何不抓取如果在scrapy框架之前像抓取数据一样

时间:2017-06-28 08:09:33

标签: python http-headers scrapy last-modified

我不想抓取如果与scrapy框架之前的抓取数据相同。

为了解决这个问题,我认为在抓取完成后,将日期时间放在数据库中,如果自该日期时间以来尚未更新Last-Modified响应HTTP,则不要抓取。

我的问题是以下两个。

  1. 你怎么看待这种方式?有更好的想法吗?
  2. 如果有代码可以使用scrapy框架引用Last-Modified响应HTTP控件,您能教我吗?
  3. 感谢您阅读我的问题。

1 个答案:

答案 0 :(得分:1)

并非所有网站都会返回Last-Modified标题,如果您确定,您可以先尝试HEAD请求检查标题并与您的数据库信息匹配,然后GET 1}}请求抓取数据:

def parse(self, response):
    urls = []  # some urls
    for url in urls:
        yield Request(url, method='HEAD', self.check)

def check(self, response):
    date = response.headers['Last-Modified']
    #check date to your db
    if db_date > date:  # or whatever is your case
        yield Request(response.url, self.success)

def success(self, response):
    yield item