Почему текст, полученный со страниц, иногда выглядит как бред?

Я использую 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,

Другие вопросы по тегам