リクエストセッションのサイトにログインするために使用する機械化ブラウザのクッキーを使用しようとしていますが、セッションからリクエストを行うたびにTypeError 。CookieのTypeErrorリクエストのCookieJarクッキーセッション
私は(実際に便利なコードのほとんどが削除され、これは小さな一例です)サイトによって公開されたAPIを使用するための便利なクラスを作った:
from __future__ import absolute_import, division, print_function, unicode_literals
import requests
import mechanize
import cookielib
class Requester:
def __init__(self, api_root_url):
self.api_root_url = api_root_url
self.s = requests.Session()
self.new_cookie()
def new_cookie(self):
br = mechanize.Browser()
cookie_jar = cookielib.CookieJar()
br.set_cookiejar(cookie_jar)
# Acquire cookies by logging in with mechanize browser
self.s.cookies.set('v_cookies', cookie_jar)
def make_request(self, req_method, endpoint):
url = self.api_root_url + endpoint
method = getattr(self.s, method)
response = method(url)
return response
私が使用して別のスクリプト、このクラスからこのような要求を作るために:
from __future__ import absolute_import, division, print_function, unicode_literals
from requester import Requester
req = Requester(api_root)
response = req.make_request('get', endpoint)
をそして私はresponse = method(url)
ラインからこのエラーを取得する:
File "...\Anaconda2\lib\cookielib.py", line 1301, in _cookie_attrs
self.non_word_re.search(cookie.value) and version > 0):
TypeError: expected string or buffer
、以下のコードを持つ単純なGETリクエストをテストラインがr1
作品を制作けどr2
を与える行が
def make_request(self, req_method, endpoint):
url = self.api_root_url + endpoint
cookies = self.s.cookies.get('v_cookies')
r1 = requests.get(url, cookies=cookies)
r2 = self.s.get(url)
どのように私が正しくrequests.Sessionオブジェクトにクッキーを使用しませんか?