假设我们要从网站中爬网的特定目录中,页面名称是特定范围内的整数ID,例如/book/BOOK_ID,其中BOOK_ID为0到2,000,000,我不想对整个网站进行爬网,并且没有包含所有链接的单个页面。不允许使用搜索页面(用于空搜索)或效率低下。因此,我们只想遍历该范围内的所有这些ID,并尝试下载页面,而只是忽略404错误。

但是由于Scrapy非常强大,功能强大,并且可以处理许多其他事情,所以我想知道Scrapy是否有可能。

最佳答案

对的,这是可能的。使用start_requests()发起对/book/BOOK_ID页的请求:

def start_requests(self):
    for book_id in xrange(1, 20000000):
        yield Request('https://my_site.com/book/{book_id}'.format(book_id=book_id),
                      callback=self.parse_book)

def parse_book(self, response):
    # parse the response


另外,默认情况下,Scrapy会忽略404。但是,如果需要,可以处理,请参阅:


HttpErrorMiddleware

关于python - Scrapy-尝试目录中的所有ID,而不进行递归链接搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27884732/

10-15 10:21