2016-12-15 4 views
1

BackgroundInfo:requests.get()を使用してCookieの一部が欠落していますか?

私はアマゾンをこするいます。 URLのページソースコードの最終バージョンを取得するためにrequests.session.get()を使用する前に、セッションCookieを設定する必要があります。

コード:

import requests 

# I am currently working in China, so it's cn. 
# Use the homepage to get cookies. Then use it later to scrape data. 
homepage = 'http://www.amazon.cn' 
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'} 
response = requests.get(homepage,headers = headers) 
cookies = response.cookies 

#set up the Session object, so as to preserve the cookies between requests. 
session = requests.Session() 
session.headers = headers 
session.cookies = cookies 

#now begin download the source code 
url = 'https://www.amazon.cn/TCL-%E7%8E%8B%E7%89%8C-L65C2-CUDG-65%E8%8B%B1%E5%AF%B8-%E6%96%B0%E7%9A%84HDR%E6%8A%80%E6%9C%AF-%E5%85%A8%E6%96%B0%E7%9A%84%E9%87%8F%E5%AD%90%E7%82%B9%E6%8A%80%E6%9C%AF-%E9%BB%91%E8%89%B2/dp/B01FXB0ZG4/ref=sr_1_2?ie=UTF8&qid=1476165637&sr=8-2&keywords=L65C2-CUDG' 
response = session.get(url) 

望ましい結果:

Chromeでアマゾンのホームページに移動すると、クッキーのようなものでなければなりません:

Amazon HomePage

私が赤で強調表示しているクッキー部分にあるように、私たちのホームページへのリクエストに対する応答によって設定されたクッキーの一部は、おそらく最後から残っているリクエストヘッダーの一部でもある "ubid-acbcn"です訪問。

これは私が欲しいクッキーです。私は上記のコードを取得しようとしました。

pythonコードでは、cookieJarまたは辞書である必要があります。私が代わりに取得しています何

{'ubid-acbcn':'453-7613662-1073007','session-id':'455-1363863-7141553','otherparts':'otherparts'} 

:いずれかの方法で、その内容は'UBID-acbcn' と 'セッションID'が含まれて何かする必要があり、 'セッションID' はあり が、 'ubid-acbcn'がありません。

>>homepage = 'http://www.amazon.cn' 
>>headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'} 
>>response = requests.get(homepage,headers = headers) 
>>cookies = response.cookies 
>>print(cookies.get_dict()): 
>>{'session-id': '456-2975694-3270026','otherparts':'otherparts'} 

関連情報:

  • OS:WINDOWS 10
  • PYTHON:3.5
  • 要求:2.11.1

私は少し冗長であることのために申し訳ありません。

私が試した何

とフィギュア:

  1. 私は、特定のキーワードのためにグーグルが、誰もこの 問題に直面しているように思いません。
  2. アマゾンと何か関係があるかもしれないと思います 擦り傷対策。しかし私のヘッダーを変えて 自分自身を人間として変える以外に、私は私がすべきことを知りません。
  3. 私は、ttがクッキーを見つけられない可能性があることを楽しんでいます。しかし、むしろ私は要求(homepage = headers = headers)を適切に設定していないので、response.cookieは期待通りにはできません。このことを踏まえて、私はブラウザにリクエストヘッダをコピーしようとしましたが、クッキー部分だけを残していましたが、レスポンスクッキーには 'ubid-acbcn'部分がありません。たぶんいくつかの他のパラメータを設定する必要がありますか?

答えて

0

単純な「名前のない」GETリクエストからクッキーを取得しようとしています。しかし、もしubid-acbcn値必要な取得することができSessionの "代わって" それを送っへ:

session = requests.Session() 
homepage = 'http://www.amazon.cn' 
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'} 
response = session.get(homepage,headers = headers) 
cookies = response.cookies 
print(cookies.get_dict()) 

出力:

{'ubid-acbcn': '456-2652288-5841140' ...} 
+0

それは奇妙です。私は今日これを試したが、うまくいかなかった。あなたは明らかに私が何を得ているからです。私の試みで何かが間違っているはずです。私はバックグラウンドでVPNを持っていますが、それを無効にしようとしたが、依然として望ましい結果を得られません。後で私はウェブサイトを閲覧している可能性があることに気付くので、私はamazon.cnのクッキーを削除するようにChrome設定に行きます。それでもまだ動作しません。 –

関連する問題