我在urllib2的urlopen中使用了timeout参数.
urllib2.urlopen('http://www.example.org', timeout=1)
Run Code Online (Sandbox Code Playgroud)
如何告诉Python如果超时到期,应该引发自定义错误?
有任何想法吗?
我想抓住一个特定的http错误,而不是整个家庭中的任何一个..我想要做的是 -
import urllib2
try:
urllib2.urlopen("some url")
except urllib2.HTTPError:
<whatever>
Run Code Online (Sandbox Code Playgroud)
但我最终得到的是捕获任何类型的http错误,但我只想抓住指定的网页不存在!! 可能那是HTTP错误404 ..但我不知道如何指定只捕获错误404并让系统运行其他事件的默认处理程序..建议?
我正在使用urllib.urlencode构建Web POST参数,但是如果存在除了它们之外的值,我只想添加一些值None.
apple = 'green'
orange = 'orange'
params = urllib.urlencode({
'apple': apple,
'orange': orange
})
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是如果我将orange变量设为可选,我怎样才能防止它被添加到参数中?像这样的东西(伪代码):
apple = 'green'
orange = None
params = urllib.urlencode({
'apple': apple,
if orange: 'orange': orange
})
Run Code Online (Sandbox Code Playgroud)
我希望这很清楚,有谁知道如何解决这个问题?
如果我有一个URL,当在Web浏览器中提交时,弹出一个对话框来保存zip文件,我将如何在Python中捕获和下载此zip文件?
在urllib2和POST调用上有很多东西,但我遇到了问题.
我正在尝试对服务进行简单的POST调用:
url = 'http://myserver/post_service'
data = urllib.urlencode({'name' : 'joe',
'age' : '10'})
content = urllib2.urlopen(url=url, data=data).read()
print content
Run Code Online (Sandbox Code Playgroud)
我可以看到服务器日志,当我将数据参数发送到urlopen时,它说我正在进行GET调用.
该库引发了404错误(未找到),这对于GET调用是正确的,POST调用处理得很好(我也尝试使用HTML表单中的POST).
urllib.urlretrieve即使远程http服务器上不存在该文件,它也会以静默方式返回,它只是将html页面保存到指定文件中.例如:
urllib.urlretrieve('http://google.com/abc.jpg', 'abc.jpg')
Run Code Online (Sandbox Code Playgroud)
只是默默地返回,即使google.com服务器上不存在abc.jpg,生成abc.jpg的也不是有效的jpg文件,它实际上是一个html页面.我想返回的头文件(一个httplib.HTTPMessage实例)可以用来实际判断检索是否成功,但我找不到任何文档httplib.HTTPMessage.
任何人都可以提供有关此问题的一些信息吗?
什么时候会有人使用httplib和什么时候urllib?
有什么区别?
我想我准备好urllib使用httplib,我打算制作一个需要发出http请求的应用程序,到目前为止我只在python中使用httplib.HTTPConnection请求,并阅读urllib我看到我也可以使用它来获取请求,那么一个或另一个的好处是什么?
我想打开一个网址urllib.request.urlopen('someurl'):
with urllib.request.urlopen('someurl') as url:
b = url.read()
Run Code Online (Sandbox Code Playgroud)
我一直收到以下错误:
urllib.error.HTTPError: HTTP Error 403: Forbidden
Run Code Online (Sandbox Code Playgroud)
我理解错误是由于网站不让python访问它,阻止机器人浪费他们的网络资源 - 这是可以理解的.我去搜索,发现你需要更改urllib的用户代理.但是我在这个问题上找到的关于如何更改用户代理的所有指南和解决方案都是使用urllib2,而我使用的是python 3,因此所有解决方案都不起作用.
我怎么能用python 3解决这个问题?
我有一个像"Tanım"这样的unicode字符串,它以某种方式被编码为"Tan%u0131m".如何将此编码的字符串转换回原始的unicode.显然urllib.unquote不支持unicode.
是否urllib2在urlopen拨打电话时获取整个页面?
我想在不获取页面的情况下读取HTTP响应头.它看起来像urllib2打开HTTP连接,然后获取实际的HTML页面......或者它是否只是通过urlopen调用开始缓冲页面?
import urllib2
myurl = 'http://www.kidsidebyside.org/2009/05/come-and-draw-the-circle-of-unity-with-us/'
page = urllib2.urlopen(myurl) // open connection, get headers
html = page.readlines() // stream page
Run Code Online (Sandbox Code Playgroud) python ×10
urllib ×10
urllib2 ×3
http ×2
dictionary ×1
download ×1
forwarding ×1
httplib ×1
networking ×1
python-3.x ×1
timeout ×1
unicode ×1
url ×1
user-agent ×1
variables ×1
w3c ×1
zip ×1