Я использую mechanize / cookiejar / lxml для чтения страницы, и она работает для некоторых, но не для других.Ошибка, которую я получаю в них, та, что в названии.Я не могу опубликовать страницы здесь, потому что они не SFW, но есть ли способ это исправить?По сути, это то, что я делаю:
import mechanize, cookielib
from lxml import etree
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(False)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 maverick Firefox/3.6.13')]
response = br.open('...')
tree = etree.parse(response) #error
После этого я получаю рут и ищу в документе нужные мне значения.Очевидно, iterparse не дает сбой, но в настоящий момент я предполагаю, что это не только потому, что я ничего не обработал с ним.Кроме того, я еще не выяснил, как с ним искать.
Я пытался отключить gzip и включить отправку реферера, но ни одна из них не решает проблему.Я также попытался сохранить исходный код на диск и создать дерево оттуда только ради него, и я получаю ту же ошибку.
edit
Полученный ответ кажетсявсе в порядке, используя print repr (response), как предложено, я получаю <response_seek_wrapper at 0xa4a160c whose wrapped object = <stupid_gzip_wrapper at 0xa49acec whose fp = <socket._fileobject object at 0xa49c32c>>>
.Я также могу сохранить ответ, используя метод read (), и проверить, что сохраненный .xml работает в браузере и во всем.
Кроме того, на одной из страниц есть ’
, который дает мнеследующая ошибка: «lxml.etree.XMLSyntaxError: объект« rsquo »не определен, строка 17, столбец 7054».До сих пор я заменил его регулярным выражением, но есть ли анализатор, который может справиться с этим?Я получил эту ошибку даже с предложенным ниже lxml.html.parse.
Что касается подсвечиваемого файла, я имел в виду, что когда я открываю его с помощью gEdit, он делает следующее: http://img34.imageshack.us/img34/9574/gedit.jpg