Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 27, 2012 04:02:50

kristus
Зарегистрирован: 2012-10-27
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

lxml (xpath) всегда возвращает пустой список(

ПОмогите решить проблему, перепробовал все!ничего не помагает.пытаюсь парсить lxml xpath -постянно пустой список(
один из вариантов кода:

page = urllib.urlopen("http://www.google.ru/").read()
lt = lxml.html.fromstring(page)
text = lt.xpath("html/body//p[*]")
print len(text)

проверяю через firebug - все парсится отлично!
что делать ,уже ума не приложу(

Отредактировано kristus (Окт. 27, 2012 04:26:54)

Офлайн

#2 Окт. 27, 2012 04:12:11

kristus
Зарегистрирован: 2012-10-27
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

lxml (xpath) всегда возвращает пустой список(

если в строке xpath убрать html - body//p , то выдает обьект в непонятном виде:
text=

<Element p at 0xb6bece0c>
преобразование вида print (“text={0}”.format(text).encode('utf-8')) ничего не меняет

Отредактировано kristus (Окт. 27, 2012 04:26:28)

Офлайн

#3 Окт. 27, 2012 04:35:06

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

lxml (xpath) всегда возвращает пустой список(

Раньше гугл вроде бы давал отлуп юзерагенту urllib?

>>> root4.xpath("/html/body//p[*]")
[<Element p at 0x157e840>]
А что такое “html/body”? Разве xpath не должен начинаться с / ?

kristus
выдает обьект в непонятном виде:
Кури маны по ElementTree / lxml. lxml превращает документ в дерево.

Если тебе нужен текст внутри тега, то он достается так: elem.text
А если после тега (br, например), то так: elem.tail.

Офлайн

#4 Окт. 27, 2012 13:35:57

kristus
Зарегистрирован: 2012-10-27
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

lxml (xpath) всегда возвращает пустой список(

спасибо, буду курить! html/body - firebug гененирует без первого /

Офлайн

#5 Окт. 28, 2012 12:34:20

kristus
Зарегистрирован: 2012-10-27
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

lxml (xpath) всегда возвращает пустой список(

РАзобрался почему список был нулевым! xpath не парсит <tbody>(( а через fire bug все ок!

Офлайн

#6 Окт. 28, 2012 22:40:01

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

lxml (xpath) всегда возвращает пустой список(

У тебя в примере tbody же не было.

Офлайн

#7 Окт. 29, 2012 05:22:25

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

lxml (xpath) всегда возвращает пустой список(

То что вы видите в firebag не совпадает с получаемым документом. Броузеры делают исправления в DOM(добавляют узлы tbody) и т.д. Хотите видеть то же, что и lxml смотрите “Исходный код страницы”



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#8 Окт. 29, 2012 08:55:35

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

lxml (xpath) всегда возвращает пустой список(

Да, но разве firebug дает xpath для исходного кода страницы?

Офлайн

#9 Окт. 29, 2012 11:41:08

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

lxml (xpath) всегда возвращает пустой список(

odnochlen
Да, но разве firebug дает xpath для исходного кода страницы?
Я, видимо, нехорошо сформулировал. Дерево документа, построенное броузером и построенное lxml могут отличаться, поэтому не стоит полагаться на пути из firebug



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#10 Окт. 29, 2012 11:46:39

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

lxml (xpath) всегда возвращает пустой список(

А xpath разве не стандаритизирован? Какой в нем смысл, если в разных библиотеках результаты применения будут разными?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version