Scrapy - 尝试目录中的所有 ID,无需递归 link 搜索
Scrapy - try all IDs inside a directory without recursive link searching
假设我们要抓取网站的特定目录,其中页面名称是特定范围内的整数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
。但是,如果你需要,你可以处理它,参见:
假设我们要抓取网站的特定目录,其中页面名称是特定范围内的整数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
。但是,如果你需要,你可以处理它,参见: