如何使用BeautifulSoup构建爬虫抓取IMDB Top250电影数据并导出至Excel
使用BeautifulSoup爬取IMDB Top250电影数据并导出到Excel
所需依赖
先安装必要的Python库:
pip install requests beautifulsoup4 openpyxl
完整代码实现
import requests from bs4 import BeautifulSoup from openpyxl import Workbook # 模拟浏览器请求头,避免被反爬拦截 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } # IMDB Top250页面URL url = 'https://www.imdb.com/chart/top/' # 发送请求获取页面内容 response = requests.get(url, headers=headers) response.raise_for_status() # 检查请求是否成功 # 解析HTML页面 soup = BeautifulSoup(response.text, 'html.parser') # 定位所有电影条目 movie_items = soup.select('.lister-list tr') # 准备存储数据的列表 movies_data = [] # 遍历每个电影条目提取信息 for item in movie_items: # 提取电影名称 title_tag = item.select_one('.titleColumn a') movie_title = title_tag.get_text(strip=True) # 提取电影详情页URL(拼接完整域名) movie_url = f"https://www.imdb.com{title_tag['href']}" # 提取电影简介(做容错处理,避免部分无简介条目导致报错) summary_content = item.select_one('.summaryColumn').get_text(strip=True) movie_summary = summary_content.split('|')[-1].strip() if '|' in summary_content else '无简介' # 将数据添加到列表 movies_data.append({ '电影名称': movie_title, '详情页URL': movie_url, '简介': movie_summary }) # 创建Excel工作簿并写入数据 wb = Workbook() ws = wb.active ws.title = 'IMDB Top250' # 写入表头 ws.append(['电影名称', '详情页URL', '简介']) # 写入电影数据 for movie in movies_data: ws.append([movie['电影名称'], movie['详情页URL'], movie['简介']]) # 保存Excel文件 wb.save('IMDB_Top250电影数据.xlsx') print('数据爬取并导出完成!')
关键说明
- 反爬规避:通过
User-Agent模拟浏览器请求,降低被IMDB反爬机制拦截的概率。 - 选择器适配:代码基于当前IMDB Top250页面的HTML结构编写,若后续页面布局更新,需对应调整
.lister-list tr、.titleColumn a等选择器。 - 容错处理:针对部分电影无简介的情况做了判断,避免程序运行崩溃。
- Excel操作:使用
openpyxl库实现Excel文件的创建与写入,支持标准.xlsx格式。
内容的提问来源于stack exchange,提问作者aseljayasooriya
相关产品推荐
相关产品推荐

