Почему текст, полученный со страниц, иногда выглядит как бред?
Я использую urllib и urllib2 в Python для открытия и чтения веб-страниц, но иногда текст, который я получаю, не читается. Например, если я запускаю это:
import urllib
text = urllib.urlopen('http://tagger.steve.museum/steve/object/141913').read()
print text
Я получаю нечитаемый текст. Я прочитал эти посты:
Python urllib2 автоматически распаковывает данные gzip, полученные с веб-страницы?
но не могу найти мой ответ.
Заранее спасибо за вашу помощь!
ОБНОВЛЕНИЕ: я исправил проблему, "убедив" сервер, что мой пользовательский агент - браузер, а не сканер.
import urllib
class NewOpener(urllib.FancyURLopener):
version = 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.10 Chromium/15.0.874.120 Chrome/15.0.874.120 Safari/535.2'
nop = NewOpener()
html_text = nop.open('http://tagger.steve.museum/steve/object/141913').read()
Спасибо всем за ваши ответы.
2 ответа
Вы можете использовать Selenium для получения контента. Скачайте драйверы сервера и клиента, запустите сервер и запустите это:
from selenium import selenium
s = selenium("localhost", 4444, "*chrome", "http://tagger.steve.museum")
s.start()
s.open("/steve/object/141913")
text = s.get_html_source()
print text
Этот бред является реальным ответом сервера на запрос 'http://tagger.steve.museum/steve/object/141913'
, На самом деле, это похоже на запутанный JavaScript, который, если выполняется браузером, загружает содержимое страницы.
Чтобы получить этот контент, вам нужно выполнить этот JavaScript, и это может быть действительно трудной задачей в Python. Если вы все еще хотите сделать это, взгляните на pywebkitgtk
,