Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 15, 2010 16:21:14

PryGuy
От:
Зарегистрирован: 2010-06-14
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг HTML

Туплю. Почему ничего не находит?

import html5lib, urllib2
from html5lib import treebuilders
from lxml.html import fromstring
from lxml import etree

url = urllib2.Request('http://www.yandex.ru')
url.add_header('User-Agent', 'Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3')
content = urllib2.urlopen(url).read()

parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("lxml"))
doc = parser.parse(content)

#print(doc.xpath("//text()"))
print(doc.find("//p"))
И в какой это он кодировке кстати обрабатывает данные?



Офлайн

#2 Июнь 15, 2010 19:20:27

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Парсинг HTML

PryGuy
Почему ничего не находит?
Скорей всего надо указать неймспейс для элемента “p” в выражении.
PryGuy
И в какой это он кодировке кстати обрабатывает данные?
В которой страница.



Офлайн

#3 Июнь 16, 2010 19:41:53

qwer
От:
Зарегистрирован: 2009-03-30
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг HTML

Beautifulsoup



Офлайн

#4 Июнь 16, 2010 21:54:03

Ray
От:
Зарегистрирован: 2010-06-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг HTML

qwer
+1
Beautiful Soup Просто замечательная вещь, очень рекомендую.
Вот она:
http://www.crummy.com/software/BeautifulSoup
Вот, кстати, еще на русский дока переведена.
http://clck.ru/0p1o



Офлайн

#5 Июнь 17, 2010 00:43:25

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Парсинг HTML

Beautifulsoup уже не торт – часто ломается на некоторых сайтах.

html5lib реализует референсный парсер html5. Который уже с недавних пор использует Firefox.



Офлайн

#6 Сен. 30, 2010 15:50:55

jarens
От:
Зарегистрирован: 2010-09-30
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг HTML

А у меня следующая задача. Мне нужно пропарсить несколько постов в LiveJournal и собрать оттуда юзернеймы всех, кто оставлял комментарии. В идеале - с количеством комментариев у каждого, но это пока далёкое будущее.

Код в ЖЖ выглядит следующим образом:

<a href="http://USERNAME.livejournal.com/">
<b>USERNAME</b>
</a>
Ковырялся с BeautifulSoup. Получилось следующее:

from BeautifulSoup import BeautifulSoup
import urllib2
import re
page = urllib2.urlopen("http://od-group.livejournal.com/23659.html")
soup = BeautifulSoup(page)
ljuser = soup.findAll('a') # нашёл вообще все ссылки
soup.findAll('a', '*.livejournal.com') # выдал []
soup.findAll("a", { "href" : "*.livejournal.com"}) # выдал []
soup.findAll("span", { "lj:user" : "True"}) # выдал []
soup.findAll(href=re.compile('http://*.livejournal.com')) # выдал []
C Python не знаком вообще. Разбирался только с документацией к BeautifulSoup.



Отредактировано (Окт. 1, 2010 04:28:09)

Офлайн

#7 Окт. 1, 2010 05:33:39

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Парсинг HTML

да Python тут вобщем-то и не причем :) тут XPATH
в пятнадцатом посте Вам правильно сказали: фтопку BeautifulSoup. пользуйтесь html5lib + lxml
строка поиска будет выглядеть примерно так: './/a' (не проверял :()



Отредактировано (Окт. 1, 2010 05:35:12)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version