2014-09-24 71 views
1

我试图让使用请求模块,同时结合现有的Cookie在Python中的GET请求,这是我的代码如下所示:Python的请求,包括饼干报错了

import requests 

url="https://stackoverflow.com/" 
headers = {"User-Agent", "Mozilla/5.0"} 
cookie = { 
    "domain": ".stackoverflow.com", 
    "expirationDate": "1458316186", 
    "hostOnly": "false", 
    "httpOnly": "false", 
    "name": "__qca", 
    "path": "/", 
    "secure": "false", 
    "session": "false", 
    "storeId": "0", 
    "value": "P0-SOMEVALUE-SOMEVALUE", 
    "id": 1 
} 

print requests.get(url, cookies=cookie).text 


Traceback (most recent call last): 
    File "test.py", line 19, in <module> 
    print requests.get(url, cookies=cookie).text 
    File "C:\Python27\lib\site-packages\requests\api.py", line 55, in get 
    return request('get', url, **kwargs) 
    File "C:\Python27\lib\site-packages\requests\api.py", line 44, in request 
    return session.request(method=method, url=url, **kwargs) 
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 422, in request 
    prep = self.prepare_request(req) 
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 360, in prepare_request 
    hooks=merge_hooks(request.hooks, self.hooks), 
    File "C:\Python27\lib\site-packages\requests\models.py", line 296, in prepare 
    self.prepare_cookies(cookies) 
    File "C:\Python27\lib\site-packages\requests\models.py", line 491, in prepare_cookies 
    cookie_header = get_cookie_header(self._cookies, self) 
    File "C:\Python27\lib\site-packages\requests\cookies.py", line 134, in get_cookie_header 
    jar.add_cookie_header(r) 
    File "C:\Python27\lib\cookielib.py", line 1326, in add_cookie_header 
    attrs = self._cookie_attrs(cookies) 
    File "C:\Python27\lib\cookielib.py", line 1285, in _cookie_attrs 
    self.non_word_re.search(cookie.value) and version > 0): 
TypeError: expected string or buffer 

不完全知道我做错了...

+0

我删除了你的新问题;这是一个完全独立的问题,请参阅[Python,Unicode和Windows控制台](http://stackoverflow.com/q/5419) – 2014-09-24 15:15:32

回答

2

饼干应该只是键值对。包含更多内容,包括浏览器追踪cookies的所有元数据,以及如何通过客户端代码返回或访问此类cookie。

让您的Cookie 只是的一个键 - 值对:

cookies = {'__qca': 'P0-SOMEVALUE-SOMEVALUE'} 

一切都在你的映射别的是不会被发送到服务器 Cookie标头的一部分。

在这种特定情况下它是'id': 1键值对抛出异常,因为requests预计它认为的id饼干是一个字符串,而不是一个整数的价值。

+0

谢谢!似乎它的工作和设法得到正确的请求,但有一个问题转录对HTML文本的响应......任何想法? – 2014-09-24 15:12:07

+1

@ Stupid.Fat.Cat:该问题与您的控制台有关,请参阅[Python,Unicode和Windows控制台](http://stackoverflow.com/q/5419)。此外,这是一个新的问题,与cookies问题分开。 – 2014-09-24 15:13:00