LINUX.ORG.RU

Ошибка парсинга lxml

 , , ,


0

1

Пишу нормальную вариацию этого скрипта.

Начал писать (а не копировать) и получил следующую ошибку при парсинге списка с vkAPI:

Traceback (most recent call last):
  File "./vkscrob.py", line 58, in <module>
    doc	 = html.document_fromstring(html)	
  File "/usr/lib/python2.6/dist-packages/lxml/html/__init__.py", line 511, in document_fromstring
    value = etree.fromstring(html, parser, **kw)
  File "lxml.etree.pyx", line 2532, in lxml.etree.fromstring (src/lxml/lxml.etree.c:48634)
  File "parser.pxi", line 1542, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:72207)
МalueError: can only parse strings
Причем, по адресу действительно строки, а не нечто иное. Сам код: http://pastebin.com/pjbaDqZj

Ответ на: комментарий от morpheus

МalueError: can only parse strings

МalueError

Тогда у тебя какой-то китайский lxml.

baverman ★★★
()
Ответ на: комментарий от morpheus

Еще вариант, можешь не строку передавать, а сразу файловый объект (page) в etree.parse с соответствующим парсером, в доке пример есть.

baverman ★★★
()
>>> import lxml
>>> page = urllib2.urlopen('http://vk.com')
>>> html = page.read()
>>> doc      = lxml.html.document_fromstring(html) 
>>> doc
<Element html at 0x7f0ea6d9b830>

Копипаст с пастбина работает. А у тебя там видимо from lxml import html и парсится модуль.

Kalashnikov ★★★
()
Ответ на: комментарий от Kalashnikov

Переменную html по другому не пробовал называть?

Угу, мужики говорят еще можно экран монитора протереть.

baverman ★★★
()
Ответ на: комментарий от Kalashnikov

Когда подключаю в начале как import lxml, то пишет, что lxml.html.... Не найден. Если через from lxml import html, то модуль импортируется, но с ошибкой

morpheus
() автор топика
Ответ на: комментарий от morpheus

Так, а как это исправить? Просто системная тоже UTF8

срать какая у тебя системная кодировка. Нужно прочитать charset из респонса и сделать после read()

html = html.decode(charset_from_response)

mashina ★★★★★
()
Ответ на: комментарий от Kalashnikov

А у тебя там видимо from lxml import html и парсится модуль.

у него такого быть не может судя по трейсу.

mashina ★★★★★
()
Ответ на: комментарий от morpheus

Смотри: это то, что должно парситься: тут или в виде html/xml

Я имел в виду нечто другое. Ну да ладно, я даже зарегистрировался вконтакте, чтобы проверить.

Добавил только «import lxml.html» к первоначальной версии скрипта:

http://pastebin.com/4JGjiqGk

И у меня он отработал без ошибок.

baverman ★★★
()
Ответ на: комментарий от baverman

Проверю и отпишусь, как буду рядом с рабочей машиной

morpheus
() автор топика
Ответ на: комментарий от morpheus

Это не баг с импортом. «lxml.html» — пакет, поэтому должен импортироваться полностью.

baverman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.