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

关于Python爬虫解析器未在终端输出电影标题的问题求助

嘿,我来帮你排查下问题!这种爬取不到内容的情况,大概率是两个核心原因导致的,咱们一步步拆解解决:

问题排查与解决思路

1. 网站反爬机制拦截了你的请求

默认情况下,requests.get()发送的请求里,User-Agent标识是python-requests/xx.x.x,很多网站会直接识别出这是爬虫请求,返回空页面或反爬提示页,导致BeautifulSoup根本找不到你要的电影标题元素。

解决方法:添加模拟浏览器的请求头
给请求加上浏览器的User-Agent,让网站误以为是正常用户访问:

from bs4 import BeautifulSoup
import requests

url = 'https://www.kinoafisha.info/rating/movies/2022/'
# 模拟Chrome浏览器的请求头,你也可以换成其他浏览器的标识
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}
response = requests.get(url, headers=headers)

# 先做基础验证:确认请求成功,页面内容正常
print(f"请求状态码:{response.status_code}")
print(f"返回页面字符长度:{len(response.text)}")

soup = BeautifulSoup(response.text, 'html.parser')
films = soup.find_all('div', class_='movieItem_title')
for film in films:
    print(film.text.strip())

运行后先看状态码是否为200(表示请求成功),页面字符长度如果是几千甚至上万就是正常的;如果只有几百字符,说明还是被反爬拦截了,可能需要进一步添加其他请求头(比如Accept-Language)。

2. 页面元素结构已更新

有时候网站会迭代页面布局,你用的movieItem_title类名可能已经被替换了。

解决方法:手动确认当前页面的元素结构
打开目标页面,按F12调出开发者工具,用元素选择器点击任意电影标题,查看它的父容器和自身的class名称。比如现在打开这个页面,电影标题的class可能已经变成了ratingItem_title,这时候需要把代码里的选择器改成对应的新类名。

你也可以用更灵活的方式提取:先找到所有电影条目容器,再从中提取标题,比如:

movie_items = soup.find_all('div', class_='ratingItem')
for item in movie_items:
    title_tag = item.find('div', class_='ratingItem_title')  # 替换成你查到的实际class
    if title_tag:
        print(title_tag.text.strip())

额外验证小技巧

如果还是不确定问题在哪,可以把返回的页面内容保存到本地查看:

with open('page.html', 'w', encoding='utf-8') as f:
    f.write(response.text)

打开生成的page.html文件,看看里面有没有电影标题——如果没有,说明请求到的内容不对;如果有,就是你的选择器写错了。

按照上面的步骤排查,应该就能解决电影标题无法显示的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 00:37:45