python - Urllib3 HTTP 错误 502:错误的网关
问题描述
我正在尝试抓取 zk.fm 以下载音乐,但这给我带来了一些麻烦。我正在使用 urllib3 生成响应,但这总是会产生 Bad Gateway 错误。通过浏览器访问网站工作得很好。
这是我的代码(带有随机的假用户代理)。我正在尝试访问“ http://zk.fm/mp3/search?keywords= ”,后跟一些指示歌曲名称和艺术家的关键字,例如“ http://zk.fm/mp3/search?keywords =幼稚+甘比诺+心跳”。
from bs4 import BeautifulSoup
from random import choice
import urllib3
desktop_agents = ['Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/602.2.14 (KHTML, like Gecko) Version/10.0.1 Safari/602.2.14',
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0']
def random_headers():
return {'User-Agent': choice(desktop_agents)}
ua = random_headers()
http = urllib3.PoolManager(10,headers=user_agent)
response = http.request('GET',"http://zk.fm/mp3/search?
keywords=childish+gambino+heartbeat")
soup = BeautifulSoup(response.data)
有没有办法解决 502 错误,还是我无法控制?
解决方案
您需要启用 cookie 的持久性,然后按顺序访问站点主页,然后是搜索 URL。我建议(个人)python-requests,但这取决于你。请参阅此处进行讨论。
我通过访问搜索页面进行了测试 - 错误 502。访问主页 - 200。访问搜索 - 200。清除 cookie 并再次访问搜索 - 502。所以问题一定是 cookie。
推荐阅读
- asp.net-core - 如何检测用户下载结果
- ajax - select2 ajax 加载数据在部分视图 ASP .NET MVC 中不起作用
- flutter - AnimatedList 中的滑块值错误
- swift - 如何从 Swift 中的 Pod 模块访问目标 c 方法
- python - 想在我的 Python 代码中添加多处理
- c++ - btHeightfieldTerrainShape 构造函数参数不明确
- java - 如何懒惰地评估嵌套的 flatMap
- mysql - Spring Data JPA Java - 如何从查询中获取最后10条记录并按列排序
- r - 识别 group_by 和 mutate 中的值
- typescript - Typescript 从现有记录创建新记录?