爬取微博移动端评论
Python爬取微博移动端评论完整教程(基础+常见问题)
在数据采集领域,微博作为国内主流的社交媒体平台,其评论数据蕴含着丰富的用户观点和舆论倾向。相较于PC端,微博移动端接口更简洁、反爬措施相对宽松,是获取评论数据的优选方案。本文将以Python为工具,从环境搭建到代码实现,手把手教你爬取微博移动端评论,并解答过程中可能遇到的常见问题。
一、基础教程:从零实现微博评论爬取
1.1 环境准备
首先需要搭建Python爬虫环境,核心依赖库如下:
requests:发送HTTP请求,获取接口数据
json:解析接口返回的JSON数据(Python内置,无需安装)
pandas:数据存储与导出(可选,用于生成Excel文件)
time:设置请求间隔,避免被反爬(Python内置)
安装命令:
1 |
|
1.2 核心原理:找到评论接口
微博移动端评论通过AJAX异步加载,我们需要先找到真实的评论接口。步骤如下:
打开手机浏览器(或电脑浏览器切换到移动端模式),登录微博账号,找到目标微博(例如:https://m.weibo.cn/detail/4900000000000000)
按F12打开开发者工具,切换到Network标签,勾选XHR(筛选AJAX请求)
下拉页面加载评论,此时会看到名为comment的请求,点击该请求查看详情
在Request URL中可以看到评论接口地址,在Response中可以看到JSON格式的评论数据
典型的微博评论接口格式:
1 |
|
参数说明:
id/mid:目标微博的ID(从微博详情页URL中获取,例如URL末尾的数字串)
max_id:分页标识,初始为0,后续页面的max_id从当前响应中获取
max_id_type:固定为0即可
1.3 代码实现步骤
步骤1:获取请求头(Headers)
为了模拟真实用户请求,需要在请求中添加Headers,核心参数包括User-Agent和Cookie:
User-Agent:标识浏览器类型,移动端UA示例:
Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1
Cookie:包含登录状态信息,从浏览器开发者工具的Request Headers中复制(登录后才能获取更多评论)
步骤2:发送请求并解析数据
编写代码发送GET请求,解析JSON响应中的评论内容(用户名、评论时间、评论内容等):
1 |
|
步骤3:数据存储
将爬取到的评论数据导出为Excel文件,方便后续分析:
1 |
|
二、常见问题及解决方案
2.1 问题1:请求返回403/401错误
原因:Headers参数不完整或Cookie失效,服务器识别为爬虫请求。
解决方案:
检查Cookie是否正确,重新登录微博后复制最新的Cookie
补充Headers中的其他参数(如Referer:设置为目标微博详情页URL)
确保User-Agent是移动端格式,避免使用PC端UA
2.2 问题2:只能爬取前20条评论
原因:未正确处理分页参数max_id,或未登录导致只能获取公开评论。
解决方案:
确保登录状态(Cookie有效),登录后可获取更多评论
检查max_id是否正确从响应中提取,避免手动设置固定值
部分微博可能限制评论查看权限,属于正常情况
2.3 问题3:IP被封禁,无法发送请求
原因:请求频率过高,触发微博反爬机制。
解决方案:
增加请求间隔时间(如time.sleep(3-5秒)),避免高频请求
使用代理IP池,轮换IP地址发送请求(推荐使用高匿代理)
暂停爬取1-2小时,IP封禁通常是临时的
2.4 问题4:评论内容含HTML标签
原因:接口返回的text字段包含HTML格式(如表情、话题链接等)。
解决方案:使用BeautifulSoup清理HTML标签:
1 |
|
2.5 问题5:响应数据格式异常
原因:接口参数变化或微博更新反爬策略。
解决方案:
重新通过浏览器开发者工具抓取最新的评论接口,确认参数是否变化
打印response.text查看原始响应,分析数据格式是否与预期一致
关注微博接口的官方变化(若有),及时调整代码
2.6 问题6:请求第一页之后的数据响应ok{0}
原因:请求的Cookie已失效,需要重新登录获取Cookie。(因为微博需要登录才能查看更多评论)
解决方案:
- 登录微博账号,打开浏览器开发者工具,选择Network选项卡,点击刷新按钮。
- 在Network选项卡中,找到对应的请求,查看响应头,找到Cookie字段,复制Cookie值。
- 将Cookie值替换为配置文件中的Cookie字段。
- 重新运行代码,即可获取最新数据。
三、注意事项
合规性:爬取微博数据需遵守《微博服务使用协议》,不得用于商业用途或恶意攻击,建议仅用于个人学习研究
登录状态:尽量使用小号登录,避免主号因爬虫行为被限制
请求频率:保持低调,避免短时间内发送大量请求,友好对待服务器
数据备份:定期保存爬取到的数据,防止程序异常导致数据丢失
通过以上步骤,你可以成功爬取微博移动端评论数据。如果遇到其他问题,欢迎在评论区留言交流!