You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IMDB Top1000电影爬虫重复爬取同一页面问题求助

解决IMDB Top1000爬虫重复抓取同一页数据的问题

你尝试爬取IMDB Top1000电影列表,预期每次循环抓取50部、共20页完成1000部,但实际每次都重复抓取第一页的50条数据,最终数据库里存了20遍相同内容。

代码错误分析

  • 函数内硬编码起始页参数:getPageContent函数里直接把start赋值为1,完全忽略传入的参数,导致每次请求的都是第一页的URL。
  • 未接收函数返回的解析对象:循环中调用getPageContent(start)时,没有将返回的BeautifulSoup对象赋值给bs变量,后续处理一直沿用第一次请求的第一页内容。
  • 拼写错误:代码里的bsp(r.text, "lxml")应为BeautifulSoup(r.text, "lxml"),若未正确使用BeautifulSoup会导致解析异常。

修正后的代码

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 初始化DataFrame模板
data = pd.DataFrame(columns=['ID','Title','Genre','Summary'])

# 获取单页内容的函数
def getPageContent(start=1):
    # 使用传入的start参数构造URL,移除硬编码的start=1
    url = f'https://www.imdb.com/search/title/?title_type=feature&year=1950-01-01,2019-12-31&sort=num_votes,desc&start={start}'
    r = requests.get(url)
    # 修正BeautifulSoup的拼写错误
    bs = BeautifulSoup(r.text, "lxml")
    return bs

# 循环爬取Top1000电影
for start in range(1,1001,50):
    # 接收当前页的解析结果
    bs = getPageContent(start)
    movies = bs.findAll("div", "lister-item-content")
    for movie in movies:
        id = movie.find("span", "lister-item-index").contents[0]
        title = movie.find('a').contents[0]
        genres = movie.find('span', 'genre').contents[0]
        genres = [g.strip() for g in genres.split(',')]
        # 优化摘要获取,清理换行并增加异常判断
        summary_elem = movie.find("p", "text-muted").find_next_sibling("p")
        summary = summary_elem.get_text(strip=True) if summary_elem else ""
  
        # 添加数据到DataFrame
        data.loc[data.shape[0]] = [id, title, genres, summary]

# 清理ID列:去除末尾的点并转为数值类型
data['ID'] = data['ID'].str.replace('.', '', regex=False).astype(float)

# 查看前51条数据验证结果
print(data.head(51))

修正说明

  1. 移除getPageContent函数内的硬编码start=1,改用传入的参数构造URL,同时用f-string简化字符串拼接。
  2. 调用函数时将返回的BeautifulSoup对象赋值给bs,确保每次循环处理当前页的内容。
  3. 修正bsp为BeautifulSoup,并补充必要的导入语句。
  4. 优化摘要获取逻辑,避免因元素缺失导致的报错,同时清理多余的换行和空格。
  5. 修复ID列的清理代码,使用更安全的字符串替换方式处理格式问题。

内容的提问来源于stack exchange,提问作者Broccoli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:15:45