当前位置: 首页 > 面试题库 >

Python遵循重定向,然后下载页面?

隆谦
2023-03-14
问题内容

我有以下python脚本,它可以很好地工作。

import urllib2

url = 'http://abc.com' # write the url here

usock = urllib2.urlopen(url)
data = usock.read()
usock.close()

print data

但是,我提供的某些URL可能会将其重定向2次或更多次。如何在加载数据之前让python等待重定向完成。例如,当使用上面的代码

http://www.google.com/search?hl=en&q=KEYWORD&btnI=1

这相当于在Google搜索上点击即时幸运按钮,我得到:

>>> url = 'http://www.google.com/search?hl=en&q=KEYWORD&btnI=1'
>>> usick = urllib2.urlopen(url)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden
>>>

香港专业教育学院尝试了(URL,数据,超时),但是,我不确定该放在哪里。

编辑:我实际上发现如果我不重定向,而只是使用第一个链接的标头,我可以抓住下一个重定向的位置,并将其用作我的最终链接


问题答案:

使用具有更好的API用于控制重定向处理的Requests库,您可能会更好:

https://requests.readthedocs.io/zh-CN/master/user/quickstart/#redirection-
and-
history

要求:

https://pypi.org/project/requests/(适用于人类的urllib替换)



 类似资料:
  • 问题内容: 我有一个PHP应用程序,它创建一个CSV文件,该文件被强制使用标题下载。这是代码的相关部分: 我想做的是在构建文件并发送下载提示后,将用户重定向到新页面。预期,仅添加到末尾是行不通的,因此我不确定如何安装它。 问题答案: 我不认为这是可以做到的-尽管我不确定100%。 常见的事情(例如,在流行的下载网站)是相反的:首先你去 后 的页面,然后下载开始。 因此,将您的用户重定向到 最后的

  • 我们的混合应用程序使用网页视图,从android版本4.4.3开始,网页视图不呈现。该应用程序尝试加载HTTPS web视图,并仅停留在那里大约50秒,之后它抛出一个异常,类似于这个Android致命信号11(SIGSEGV)在0x636F7D89(代码=1)。怎么能追查到呢?。显然,我们沿着这条建议的道路走下去了,所以没有多大的效果。 通过我们的实验,我们确定了以下几点 最后一个HTTP请求/响

  • 问题内容: 我想在节点中打开一个页面并处理应用程序中的内容。像这样的事情似乎运作良好: 但是,如果页面返回301/302重定向,则此操作无效。万一有多个重定向,我将如何以可重用的方式进行操作?http上方是否有包装器模块,可以更轻松地处理来自节点应用程序的http响应? 问题答案: http上方是否有包装器模块,可以更轻松地处理来自节点应用程序的http响应? 请求中的重定向逻辑

  • 问题内容: 我正在使用maatwebsite / excel库创建excel文件,然后下载我的文件 在我的控制器中,我这样做: 这是我生成excel文件的功能: 但是在下载excel文件后,我无法重定向到路线或视图,并且我也尝试使用: 路线: 过滤: 但无论如何都没用,下载我的文件后还有另一种重定向的方式? 提前谢谢! 问题答案: 无法完成。问题是,如果您向用户浏览器发送下载指令,则实际上是在发送

  • 问题内容: 如何在Django中完成简单的重定向(例如,在ColdFusion中或header()对于PHP)? 问题答案: 这很简单: 官方Django文档中的更多信息 更新:Django 1.0 显然,现在使用,在Django中有一种更好的方法。 范例 通用视图文档中还有更多内容。信贷卡尔斯Barrobés。 更新#2:Django 1.3+ 在Django 1.5中,redirect_to不

  • 所以我有这个凭证,用户可以下载,但之后,它需要重定向到另一个页面。什么是解决这个问题的好方法,并且在大多数浏览器上是兼容的?