我正在使用 URLlib2(和 python 2.7)从网站上获取一些内容。到目前为止,我一直在使用 URLlib2 OK 来获取内容,但这是我第一次访问在内容级别有密码的网站。我有一个合法的 u:p(我显然不能在这里分享),而且我似乎没有以某种方式为我的请求提供正确的凭证。
我在这里使用了方法:Python urllib2, basic HTTP authentication, and tr.im replace with (username, password)
my credentials as a string ("myUsername","myPassword")
当我print result.read()
得到一个空行时,当我尝试时,print result.headers()
我得到:
<addinfourl at 40895752L whose fp = <socket._fileobject object at 0x00000000026757C8>>
例如,对于每个预期的调用实例,我假设这意味着那里有一个文件对象......
我试图print result.info()
查看是否有一个标题返回,我看到一组标题:
REDACTED
Date: Mon, 01 Oct 2012 10:06:24 GMT
Server: Apache/2.2.3 (Red Hat)
X-Powered-By: PHP/5.1.6
Set-Cookie: OJSSID=mc7u47e674jmpjgk3kspfgc9l3; path=/
Refresh: 0; url=http:REDACTED loginMessage=reader.subscriptionRequiredLoginText
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8
所以我可以从“loginMessage=reader.subscriptionRequiredLoginText”中得知我没有正确发送凭据。
任何指针?
调用代码是:
def getArticle(newLink):
request = urllib2.Request(newLink)
base64string = base64.encodestring('%s:%s' % ("myUsername", "myPassword")).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)
result = urllib2.urlopen(request)
print result.read()
一个示例 URL 是:已编辑 - 它不是我的网站!