我遇到了python请求模块的错误。这是我的代码。
#!/usr/bin/env python3
import requests
url = 'http://www.mingeford365.co.uk/forum/ucp.php?mode=login'
logininfo = {'username': '',
'password': ''}
headers = {'Host': 'www.mingeford365.co.uk',
'User-Agent' : 'Mozilla/5.0 (x11; Ubuntu; Linux x86; rv:28.0) Gecko/20100101 Firefox/28.0',
'Accept': 'text/html, application/xhtml+xhtml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-gb,en;q=0.5',
'Accept-Encoding': 'gzip, deflate',
'referer': 'http://www.mingeford365.co.uk/forum/viewforum.php?f=4',
'Cookie' : '',
'Connection' : 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded'}
r = requests.session()
r.post(url,params=logininfo,headers=headers)
print (r.text)
我一直收到错误。
Traceback (most recent call last):
File "./BasicLogin.py", line 22, in <module>
print (r.text)
AttributeError: 'Session' object has no attribute 'text'
我之前在这里发现了一个类似的问题。 AttributeError: 'Response' object has no attribute 'text'
但是,解决方案是安装最新版本的请求。我已经安装了最新版本,我重新安装了pip和pip3以及两者的redownloaded请求,然后尝试升级,它告诉我我有最新版本。
但是我仍然收到相同的错误消息。我已经尝试了python 3和python 2.7中的代码,我仍然得到相同的错误,我已经尝试r.status_code
,r.text
和r.content
仍然得到会话没有属性错误。
我不知道还能做什么。
答案 0 :(得分:0)
r
仍然是会话。您需要使用r.post()
的返回值:
session = requests.session()
response = session.post(url, params=logininfo, headers=headers)
print(response.text)
变量故意重命名。请不要成为用丑陋的变量名感染代码的人。 :)
答案 1 :(得分:0)
r
是您的会话对象,而非响应。 r.post()
方法返回响应,使用代替:
response = r.post(url, params=logininfo, headers=headers)
print(response.text)
你可能想避免使用1个字母的变量;使用session
作为会话对象,例如:
session = requests.session()
response = session.post(url, params=logininfo, headers=headers)
print(response.text)
现在你正在使用的对象更加清晰。