Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 16, 2015 13:39:08

hvppydvddy
Зарегистрирован: 2015-05-26
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг погоды с RP5.RU

Всем привет. В Python совсем новичок, возникла необходимость стянуть некоторую информацию, решил попрактиковаться на пример стягивания погоды. Хочу поюзать именно либу Grab. Например с хабры тянет нормально по xpath, вот пример:

from grab import Grab
g = Grab()
g.go('http://habrahabr.ru/')
xpath = '/html/body/div[2]/div[3]/div[1]/h2'
simple = g.doc.select(xpath)
print(simple.text())
Да даже не только с хабры, потыкался по сайтам, много где срабатывает, а вот на живом примере с RP5 не очень что-то:
from grab import Grab
g = Grab()
g.go('http://rp5.ru/Weather_in_Moscow,_Russia')
xpath = '/html/body/table/tbody/tr[2]/td/div/div/div[2]/div[2]/div[12]/div[1]/div/span[1]'
simple = g.doc.select(xpath)
print(simple.text())
Xpath путь достаю дополнением Firebug для ФФ. Подскажите что делаю не так?

Отредактировано hvppydvddy (Июнь 16, 2015 13:40:56)

Офлайн

#2 Июнь 16, 2015 14:26:40

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Парсинг погоды с RP5.RU

hvppydvddy
зачем писать так

'/html/body/table/tbody/tr[2]/td/div/div/div[2]/div[2]/div[12]/div[1]/div/span[1]'
если почти у каждого елемента есть атрибут class или id? Вам нужно что-то вроде
'//div[@id="ArchTemp"]'

Отредактировано sander (Июнь 16, 2015 14:26:50)

Офлайн

#3 Июнь 16, 2015 14:42:36

hvppydvddy
Зарегистрирован: 2015-05-26
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг погоды с RP5.RU

sander
Вроде сработало, только маленько не ту цифру тащит, но это я разберусь, видимо с таким же классом есть еще что-то, на 2 градуса привирает. А как можно доставать подобный путь? Может какое-нибудь расширение умеет?

Офлайн

#4 Июнь 16, 2015 14:49:13

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Парсинг погоды с RP5.RU

hvppydvddy
самый простой способ открыть исходник страницы и посмотреть, а если не хочется работать с xpath - есть BeatifulSoup

Офлайн

#5 Июнь 16, 2015 14:53:24

hvppydvddy
Зарегистрирован: 2015-05-26
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг погоды с RP5.RU

sander
Не, названия классов то понятно, тот же Firebug их отображает только в путь. У меня сложности именно в правильности набора, всякие нюансы типа // или @… Хотя наверное проще начитаться как рожать xpath))) Хотя мой вариант вроде же корректный

'/html/body/table/tbody/tr[2]/td/div/div/div[2]/div[2]/div[12]/div[1]/div/span[1]'
чем не xpath) только вот по нему отказалось фурычить.

Офлайн

#6 Июнь 16, 2015 15:06:36

hvppydvddy
Зарегистрирован: 2015-05-26
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг погоды с RP5.RU

sander
Все, разобрался, для Firebug есть еще один аддон, называется FirePath, он как раз формирует xpath в нужном виде.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version