VB.NET转Python:YouTube爬虫响应内容不一致问题排查
问题原因与解决方法
核心差异:Cookie处理逻辑完全相反
你的VB.NET代码和Python代码在Cookie处理上有本质区别:
- VB.NET中
Dim cookies As CookieCollection = Nothing只是未手动指定Cookie集合,但默认情况下,请求会接收服务器发送的Set-Cookie响应头,YouTube服务器会根据客户端接受Cookie的行为返回适配的完整内容。 - 而Python代码中
r.cookies.set_policy(BlockCookies())是完全阻止所有Cookie的接收和发送,YouTube服务器识别到客户端拒绝Cookie后,会返回结构简化的页面(不包含直播观看数等关键数据)。
修复步骤
移除Cookie阻止策略
删除Python代码中的r.cookies.set_policy(BlockCookies()),让requests.Session自动处理Cookie(默认会接收并保存服务器发送的Cookie,后续请求自动带上)。修改后的代码:r = requests.Session() response = r.get("https://m.youtube.com/watch?v=" + videoID, headers=headers, proxies=proxies) print(response.text)再次核对请求头细节
即使你认为请求头一致,也请重点检查以下字段:User-Agent:必须是移动端浏览器标识(比如Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1),否则m.youtube.com可能跳转到桌面版页面。Accept:确保包含text/html,application/xhtml+xml等HTML内容类型,避免服务器返回JSON或其他非HTML格式。Accept-Language:和VB.NET请求中的字段值保持一致,不同地区的内容结构可能存在差异。
验证响应内容
修复后打印response.text,检查是否包含直播观看数相关的字段(比如viewCount或移动端页面特有的直播数据标签)。
内容的提问来源于stack exchange,提问作者Jane1990
相关产品推荐
相关产品推荐

