标签: urllib2

urllib2.urlopen()vs urllib.urlopen() - urllib2在urllib工作时抛出404!为什么?

import urllib

print urllib.urlopen('http://www.reefgeek.com/equipment/Controllers_&_Monitors/Neptune_Systems_AquaController/Apex_Controller_&_Accessories/').read()
Run Code Online (Sandbox Code Playgroud)

上面的脚本工作并返回预期的结果,同时:

import urllib2

print urllib2.urlopen('http://www.reefgeek.com/equipment/Controllers_&_Monitors/Neptune_Systems_AquaController/Apex_Controller_&_Accessories/').read()
Run Code Online (Sandbox Code Playgroud)

抛出以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.5/urllib2.py", line 124, in urlopen
    return _opener.open(url, data)
  File "/usr/lib/python2.5/urllib2.py", line 387, in open
    response = meth(req, response)
  File "/usr/lib/python2.5/urllib2.py", line 498, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.5/urllib2.py", line 425, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.5/urllib2.py", line 360, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.5/urllib2.py", line 506, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, …
Run Code Online (Sandbox Code Playgroud)

python url urllib urllib2 http-status-code-404

16
推荐指数
1
解决办法
2万
查看次数

如何使用python urllib2发送json数据进行登录

我想使用python urllib2来模拟登录操作,我使用Fiddler来捕获数据包并得到登录操作只是一个ajax请求,用户名和密码作为json数据发送,但我不知道如何使用urllib2发送json数据,帮忙......

python json urllib2

16
推荐指数
3
解决办法
3万
查看次数

Python urllib2.HTTPError:HTTP错误503:服务在有效网站上不可用

我一直在使用亚马逊的产品广告API来生成包含给定图书价格的网址.我生成的一个网址如下:

http://www.amazon.com/gp/offer-listing/0415376327%3FSubscriptionId%3DAKIAJZY2VTI5JQ66K7QQ%26tag%3Damaztest04-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0415376327

当我点击链接或粘贴地址栏上的链接时,网页加载正常.但是,当我执行以下代码时,我收到一个错误:

url = "http://www.amazon.com/gp/offer-listing/0415376327%3FSubscriptionId%3DAKIAJZY2VTI5JQ66K7QQ%26tag%3Damaztest04-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0415376327"
html_contents = urllib2.urlopen(url)
Run Code Online (Sandbox Code Playgroud)

错误是urllib2.HTTPError:HTTP错误503:服务不可用.首先,我不明白为什么我甚至会因为网页成功加载而出现此错误.

此外,我注意到的另一个奇怪的行为是,以下代码有时会做,有时不会给出指定的错误:

html_contents = urllib2.urlopen("http://www.amazon.com/gp/offer-listing/0415376327%3FSubscriptionId%3DAKIAJZY2VTI5JQ66K7QQ%26tag%3Damaztest04-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0415376327")
Run Code Online (Sandbox Code Playgroud)

我完全迷失了这种行为的发生方式.是否有任何修复或解决方法?我的目标是阅读网址的html内容.

编辑

我不知道为什么堆栈溢出正在改变我的代码,以便将我在上面列出的amazon链接更改为rads.stackoverflow.无论如何,忽略rads.stackoverflow链接并在引号之间使用上面的链接.

python urllib2

16
推荐指数
2
解决办法
3万
查看次数

如何在urllib2请求中获取默认标头?

我有一个使用urllib2的Python Web客户端.向我的传出请求添加HTTP标头很容易.我只是创建一个我想要添加的标题的字典,并将其传递给Request初始化程序.

但是,其他"标准"HTTP标头会添加到请求以及我明确添加的自定义HTTP标头中.当我使用Wireshark嗅探请求时,除了我自己添加的标题之外,我还会看到标题.我的问题是我如何访问这些标题?我想记录每个请求(包括完整的HTTP标头集),并且无法弄清楚如何.

任何指针?

简而言之:如何从urllib2创建的HTTP请求中获取所有传出标头?

python urllib2

15
推荐指数
2
解决办法
1万
查看次数

urllib2.URLError:<urlopen错误[Errno 11004] getaddrinfo failed>

如果我跑:

urllib2.urlopen('http://google.com')
Run Code Online (Sandbox Code Playgroud)

即使我使用其他网址,我也会遇到同样的错误.

我很确定我的计算机或路由器上没有运行防火墙,而且互联网(来自浏览器)运行正常.

python urllib2

15
推荐指数
3
解决办法
7万
查看次数

如何使用urllib2.urlopen在没有数据参数的情况下发出POST请求

我正在尝试使用urllib2.urlopen通过Facebook Graph API执行GET和POST请求.我从这里注意到:https://stackoverflow.com/questions/2690723/facebook-graph-api-and-django 我可以很容易地执行GET请求.

从这里:如何使用django发送POST请求?并且Python文档http://docs.python.org/library/urllib2.html似乎需要数据参数来执行POST请求.

但是看看Facebook的API:http://developers.facebook.com/docs/reference/api/event/#invited它说

您可以通过向/ EVENT_ID/invite/USER_ID发出HTTP POST来邀请用户参加活动

我不知道如何用urlopen做到这一点,因为直接打开这个url只会检查用户是否被邀请,如API页面所述:

您可以通过向/ EVENT_ID/invite/USER_ID发出HTTP GET来检查特定用户是否已被邀请参加活动:

欣赏输入.

python urllib2 urlopen facebook-graph-api

15
推荐指数
2
解决办法
3万
查看次数

Python:URLError:<urlopen error [Errno 10060]

操作系统:Windows 7; Python 2.7.3使用Python GUI Shell

我正在尝试通过Python阅读网站,有几位作者使用urlliburllib2库.为了将网站存储在变量中,我看到了类似的方法:

import urllib
import urllib2
g = "http://www.google.com/"
read = urllib2.urlopen(g)
Run Code Online (Sandbox Code Playgroud)

最后一行在120秒后生成错误:

> Traceback (most recent call last):   File "<pyshell#27>", line 1, in
> <module>
>     r = urllib2.urlopen(o)   File "C:\Python27\lib\urllib2.py", line 126, in urlopen
>     return _opener.open(url, data, timeout)   File "C:\Python27\lib\urllib2.py", line 400, in open
>     response = self._open(req, data)   File "C:\Python27\lib\urllib2.py", line 418, in _open
>     '_open', req)   File "C:\Python27\lib\urllib2.py", line 378, in _call_chain
>     result = func(*args) …
Run Code Online (Sandbox Code Playgroud)

python urllib urllib2 python-2.7

15
推荐指数
2
解决办法
9万
查看次数

使用Python urllib2的个人访问令牌访问Github API

我正在访问Github API v3,它工作正常,直到我达到速率限制,所以我从Github设置页面创建了一个个人访问令牌.我正在尝试使用urllib2的令牌和以下代码:

from urllib2 import urlopen, Request

url = "https://api.github.com/users/vhf/repos"
token = "my_personal_access_token"
headers = {'Authorization:': 'token %s' % token}
#headers = {}

request = Request(url, headers=headers)
response = urlopen(request)
print(response.read())
Run Code Online (Sandbox Code Playgroud)

如果我取消注释注释行(直到我达到每小时60个请求的速率限制),此代码可以正常工作.但是当我按原样运行代码时urllib2.HTTPError: HTTP Error 401: Unauthorized

我究竟做错了什么?

python api authorization github urllib2

15
推荐指数
2
解决办法
9019
查看次数

python中的握手失败(_ssl.c:590)

当我执行以下行时,

req = urllib2.Request(requestwithtoken) 
self.response = urllib2.urlopen(req,self.request).read()
Run Code Online (Sandbox Code Playgroud)

我收到以下异常:

SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)
Run Code Online (Sandbox Code Playgroud)

问题是我可以通过使用ping服务来获取令牌curl.在检索令牌的过程中,所有证书都已经过验证.反过来,通过使用生成的令牌,我无法连接到该服务.我在尝试时遇到上述错误.可能是什么原因?

python urllib2 ssl-certificate pycurl sslhandshakeexception

15
推荐指数
1
解决办法
2万
查看次数

使用urllib2和SOCKS代理

是否可以在每个开启者基础上通过一个袜子服务器上的SOCKS代理获取urllib2的页面?我已经看过使用setdefaultproxy方法的解决方案,但我需要在不同的开启者中使用不同的袜子.

所以有SocksiPy库,它工作得很好,但它必须以这种方式使用:

import socks
import socket
socket.socket = socks.socksocket
import urllib2
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "x.x.x.x", y)
Run Code Online (Sandbox Code Playgroud)

也就是说,它为所有urllib2请求设置相同的代理.如何为不同的开启者设置不同的代理?

python urllib2 socks

14
推荐指数
2
解决办法
2万
查看次数