这个问题可能是因为没有正确处理每个页面的唯一标识符或者没有清空数据缓存。解决方法可以是:新建一个变量或者清空列表来缓存每页爬取的数据,在每个循环结束后调用该变量或列表来保存数据结果。另外,也需要根据每个页面的唯一标识符去重,避免数据重复。
以下是示例代码:
import requests
from bs4 import BeautifulSoup
all_data = [] # 用于保存所有页面的数据
for i in range(1, 11): # 循环10页
url = f"https://example.com/page{i}" # 构造每个页面的URL
# 请求页面并解析HTML
res = requests.get(url)
soup = BeautifulSoup(res.content, "html.parser")
page_data = [] # 用于保存当前页面的数据
for item in soup.find_all("div", {"class": "item"}): # 遍历页面中的所有item
# 提取item中的数据
name = item.find("h2").text.strip()
price = item.find("span", {"class": "price"}).text.strip()
# 将每个item的数据保存为字典,并添加到page_data中
item_data = {"name": name, "price": price}
page_data.append(item_data)
# 将当前页面的数据合并到all_data中
all_data.extend(page_data)
# 输出所有页面的数据
for data in all_data:
print(data)