【问题标题】:Urllib3 HTTP Error 502: Bad GatewayUrllib3 HTTP 错误 502:错误的网关
【发布时间】:2018-05-21 14:03:51
【问题描述】:

我正在尝试抓取 zk.fm 以下载音乐,但这给我带来了一些麻烦。我正在使用 urllib3 生成响应,但这总是会产生 Bad Gateway 错误。通过浏览器访问该网站效果很好。

这是我的代码(带有随机的假用户代理)。我正在尝试访问“http://zk.fm/mp3/search?keywords=”,后跟一些指示歌曲名称和艺术家的关键字,例如“http://zk.fm/mp3/search?keywords=childish+gambino+heartbeat”。

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 错误,还是我无法控制?

【问题讨论】:

  • 如果您在浏览器中访问该 URL,则会出现此错误...直到您访问该网站的主页...看起来有某种限制,例如 cookie。
  • 绝对是 cookie。我清除了它们
  • 确实是 Cookie :)。见下文

标签: python urllib3 bad-gateway


【解决方案1】:

您需要启用 cookie 的持久性,然后按顺序访问站点主页,然后是搜索 URL。我建议(个人)python-requests,但这取决于你。请参阅here 进行讨论。

我通过访问搜索页面进行了测试 - 错误 502。访问主页 - 200。访问搜索 - 200。清除 cookie 并再次访问搜索 - 502。所以问题一定是 cookie。

【讨论】:

  • 谢谢,成功了!我使用 requests.Session() 创建了一个持久会话,之后我向主页发出 .post 请求,然后向搜索 url 发出 .get 请求。
猜你喜欢
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
  • 2012-08-04
  • 2022-01-07
  • 2021-07-21
  • 2011-05-14
相关资源
最近更新 更多