首页 > 解决方案 > 尝试从未指定数量的网页中抓取,不会引发异常

问题描述

我正在学习关于 udemy 的 python 课程,我们正在做一个关于网站解析的部分。这个特定的练习希望我们解析一个网站的多个页面,我们不知道总共有多少页面。

我的想法是创建一个 try 和 except 块,除非我无法获得打印任何内容的异常。我是新手,所以这很可能是一个非常愚蠢的错误。这是我的代码。它可以完成主要工作,即从每个页面中获取所有唯一作者并附加到列表中,但我希望它在我们到达不存在的页面时停止尝试解析。我知道该网站有 10 个页面,但我将范围设置为 1-19 只是为了查看我的代码在到达不存在的页面时是否会引发异常。


import requests
import bs4

authors = []

try: 
    valid_page = True
    for n in range(1,20):
        
        base_url =  'http://quotes.toscrape.com/page/{}/'
        scrape_url = base_url.format(n)
        res = requests.get(scrape_url)
        soup = bs4.BeautifulSoup(res.text,'lxml')
        
        for item in soup.select('.author'):
            unique_author = item.text
            
            if unique_author not in authors:
                authors.append(unique_author)
    
except exception as ex:
    print(ex)
    valid_page = False

标签: pythonloopsexception

解决方案


推荐阅读