python - Scrapy - 尝试目录内的所有ID,无需递归链接搜索

标签 python web-scraping scrapy web-crawler

假设我们要从一个网站中抓取特定目录,其中页面名称是特定范围内的整数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。但是,如果您需要,您可以处理它,请参阅:

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

相关文章:

web-scraping - Scrapy 项目未定义

mysql - Scrapy 批量插入

python - 如何获取与给定正则表达式匹配的子字符串列表

python - 变色龙 ZPT 模板

python - 使用 kivy 引用 kv 中的项目时出现问题

python - 如何在没有 HTML 标记的情况下选择文本

regex - 无法在 vba IE 中应用正则表达式

Python - 如何使用 gtk.Window 而不是 Gtk.Window 制作透明窗口?

python - Scrapy - 获得响应的时机

python - 如何摆脱Exceptions.TypeError错误?