2016-12-15 2 views
1

BackgroundInfo:Отсутствует определенная часть файлов cookie, используя request.get()?

Я выскабливание амазонки. Мне нужно настроить cookie сеанса перед использованием request.session.get(), чтобы получить окончательную версию исходного кода страницы URL-адреса.

Код:

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

Как вы можете найти в части файлов cookie, которую я подчеркиваю красным цветом, часть файлов cookie, установленных ответом на наш запрос на домашнюю страницу, - «ubid-acbcn», которая также является частью заголовка запроса, вероятно, оставлена ​​от последнего посещение.

Это то, что я хочу получить в cookie, которое я попытался получить по вышеуказанному коду.

В коде python это должен быть файл cookieJar или словарь. В любом случае, его содержание должно быть что-то, что содержит 'ubid-acbcn' и 'идентификатор сеанса':

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

Что я получаю вместо: 'Session-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'} 

Связанные Информация:

  • ОС: WINDOWS 10
  • ПИТОН: 3.5
  • запросы: 2.11.1

Я извиняюсь за то, что немного многословным ,

То, что я пытался и фигура:

  1. Я гугл определенных ключевых слов, но никто, кажется, не сталкивается с этой проблемой .
  2. Я полагаю, что это может быть связано с амазоном противоскользящей мерой. Но кроме меня изменить мои заголовки, чтобы маскировать себя как человека, я не знаю, что я должен делать.
  3. Я также рассмотрел возможность того, что tt не может быть случаем отсутствия cookie. Но, скорее, я не настроил свои запросы.get (домашняя страница, заголовки = заголовки) должным образом, поэтому response.cookie не так, как ожидалось. Учитывая это, я попытался скопировать заголовок запроса в моем браузере, оставив только часть файла cookie, но в ответном cookie отсутствует часть «ubid-acbcn». Может быть, какой-то другой параметр нужно настроить?

ответ

0

Вы пытаетесь получить куки из простого «безымянного» запроса GET. Но если послал его "от имени" Session вы можете получить необходимые ubid-acbcn значение:

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 на заднем плане, но он попытался отключить его, но не получит желаемого результата. Позже я заметил, что может быть, что я просмотрел веб-сайт, поэтому я перехожу к настройкам Chrome, чтобы удалить файлы cookie для amazon.cn, но это все равно не сработает. –

Смежные вопросы