如何修改Python爬虫代码获取books.toscrape.com全50页书籍名称及链接
调整后可直接运行的完整代码
from bs4 import BeautifulSoup import requests # 基础路径配置 base_catalogue_url = "http://books.toscrape.com/catalogue/" # 遍历50个分页 for page_num in range(1, 51): # 构造当前分页的访问链接 current_page_url = f"{base_catalogue_url}page-{page_num}.html" # 发起请求获取页面内容 resp = requests.get(current_page_url) resp.encoding = resp.apparent_encoding # 解析页面结构 page_soup = BeautifulSoup(resp.text, "html.parser") # 提取当前页所有书籍条目 bookshelf = page_soup.find_all("li", {"class": "col-xs-6 col-sm-4 col-md-3 col-lg-3"}) # 遍历输出当前页所有书籍信息 for book in bookshelf: book_title = book.h3.a["title"] book_relative_url = book.h3.a["href"] book_full_url = base_catalogue_url + book_relative_url print(f"{book_title}-{book_full_url}")
核心调整点说明
- 移除了冗余的
urllib依赖,统一使用requests发起请求,代码逻辑更简洁统一 - 修正了分页遍历的范围:
range(1, 51)刚好对应站点page-1.html到page-50.html的规则,避免请求不存在的page-0.html - 将原有的单页解析、数据提取逻辑移入分页循环内,每页请求完成后自动执行解析提取
- 修正了书籍链接拼接规则,适配分页页面对应的相对路径规则,输出的链接可直接访问
- 增加了编码自动识别配置,避免特殊书名出现乱码问题
内容的提问来源于stack exchange,提问作者user9142877
相关产品推荐
相关产品推荐

