Данные в urllib2 отличаются от данных в веб-инспекторе Safari.

Я посмотрел здесь и здесь для получения информации по моей проблеме, но безуспешно.

Я сделал некоторый код Python, предназначенный для захвата источника веб-страницы, как в веб-инспекторе Safari. Однако я получаю другой код из своего приложения и веб-инспектора Safari. Вот мой код:

#!/usr/bin/python

import urllib2

# headers

hdr = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.28.10 (KHTML, like Gecko) Version/6.0.3 Safari/536.28.10',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Cache-Control': 'max-age=0'}

# request data

req = urllib2.Request("https://www.google.com/#q=rainbow&safe=active", headers=hdr)

# try to get data
try:
    page = urllib2.urlopen(req)
    print page.info()
except urllib2.HTTPError, e:
    print e.fp.read()


content = page.read()

#print content

print content 

И заголовки совпадают с тем, что есть в Web Inspector:

Веб-инспектор


Однако возвращаемый код отличается от поиска Google по запросу «радуга».

Мой питон:

http://paste.ubuntu.com/6270549/

Веб-инспектор:

http://paste.ubuntu.com/6270606/

Насколько мне известно, кажется, что в моем коде отсутствует большое количество вездесущих }catch(e){gbar_._DumpException(e)} строк, присутствующих в коде Web Inspector. Кроме того, в моем коде всего 78 строк, а в коде Web Inspector — 235 строк. Означает ли это, что мой код не получает весь javascript или какую-то другую часть веб-страницы? Как я могу заставить свой код получать те же данные, что и веб-инспектор?


person Blue Ice    schedule 20.10.2013    source источник
comment
Удалите заголовок в возвращенном content, сохраните его в файле html и просмотрите его в своем браузере.   -  person martineau    schedule 20.10.2013
comment
Учтите, что из Python вы используете Mozilla в качестве пользовательского агента, это тот же пользовательский агент, который использует Safari?   -  person Paulo Bu    schedule 20.10.2013
comment
@ПаулоБу Да. Заголовки дословно копируются из Safari Web Inspector.   -  person Blue Ice    schedule 20.10.2013


Ответы (1)


Вы используете неверную ссылку для поиска в Google. Правильная ссылка должна быть:

https://www.google.com/search?q=rainbow&safe=active

вместо:

https://www.google.com/#q=rainbow&safe=active

Вторая ссылка вызовет перенаправление на домашнюю страницу Google при использовании в python, потому что она неверна (по какой-то причине), если не используется в Safari. Вот почему код отличается.

person Blue Ice    schedule 20.10.2013