Уведомления

Группа в Telegram: @pythonsu

#1 Июль 11, 2012 00:59:34

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

Подскажите механизм

paraman как я понял нужно передать супу содержимое странички полученной в свою очередь грабом.. так вот целиком html содержимое можно передать в переменную вот так: html = g.response.body.

теперь по поводу супа.. вопрос многогранный, если проделана уже огромная работа то перекодировать конечно обломно но! на сколько я осведомился по супу, то граб может выполнять все тоже, и даже больше, поэтому для парсинга подходит с лихвой.. В то же время если собершся переписывать, тоже плюс, так как это опыт, как в грабе так и в супе..

Честно, если бы я сейчас был на твоем месте, то меня смущал бы тот факт что я используя две такие мощные библиотеки в одном проекте, и при этом юзаю например граб не на полную мощь, а только так что бы перейти по ссылке и все.. для переходов и получения контента, вроде бы можно и встроенный urllib заюзать

Отредактировано funnyman (Июль 11, 2012 01:03:15)

Офлайн

#2 Июль 11, 2012 02:12:29

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

Подскажите механизм

funnyman
для переходов и получения контента, вроде бы можно и встроенный urllib заюзать
Можно, конечно, только после граба или requests делать это совсем не хочется.
А парсинг с помощью внешнего парсера занимает ровно на 1 строчку больше, чем с помошью lxml, “встроенного” в граб.

Офлайн

#3 Июль 11, 2012 07:04:50

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Подскажите механизм

Коллеги по цеху. Ваши комментарии ценны. Я действительно написал парсер с требуемыми для меня условиями и чёрт побери очень рад тому, что смог это сделать, но как сказал уважаемый funnyman, опыт. Мне нужен опыт.
Сейчас скрипт (31 строка) выполняется:

real    0m13.333s
user    0m10.581s
sys     0m0.024s

Много это или мало?

Офлайн

#4 Июль 11, 2012 08:39:23

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Подскажите механизм

paraman, много или мало по сравнению с чем? Вы считаете есть прямая зависимость между количеством строк кода и ожидаемым временем работы? Показывайте код, поможем сделать быстрее.



Офлайн

#5 Июль 11, 2012 10:51:20

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Подскажите механизм

Мне быстрей не нужно, для новичка с двух недельным опытом работы. Это результат.
Быть может есть что почитать с примерами на тему граба?
P.s. уже изучаю http://grablib.org/docs

Офлайн

#6 Июль 11, 2012 14:23:09

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Подскажите механизм

А почему так?

Если

from grab import Grab
s = 'http://sports.betfair.com'
g = Grab()
g.go('http://www.betfair.com/en/')
g.go('http://soccer.betfair.com/')
g.set_input('username', '***')
g.set_input('password', '***')
g.submit()
d = s+g.xpath('//div/span/a[@class="i13n-ltxt-MoreMkts"]').get('href')
g.go(d)
for d in g.xpath_list('//*[@class="home-team"]'):
    print d.text.replace('\n', '').replace('                    ', '')

Ничего не выдаёт, но если убрать заход т.е.:
from grab import Grab
s = 'http://sports.betfair.com'
g = Grab()
g.go('http://www.betfair.com/en/')
g.go('http://soccer.betfair.com/')
d = s+g.xpath('//div/span/a[@class="i13n-ltxt-MoreMkts"]').get('href')
g.go(d)
for d in g.xpath_list('//*[@class="home-team"]'):
    print d.text.replace('\n', '').replace('                    ', '')

То выдаёт список команд?

Отредактировано paraman (Июль 11, 2012 14:23:36)

Офлайн

#7 Июль 11, 2012 21:24:09

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

Подскажите механизм

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

Офлайн

#8 Июль 12, 2012 09:11:45

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Подскажите механизм

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

Спасибо. Что откликнулись. Но уже решил свою беду
А не подскажите, можно ли запись
    home1 = home.text.__str__()
    home2 = home1.replace('\n', '').replace('                    ', '')
Записать в строчку?

Отредактировано paraman (Июль 12, 2012 09:12:36)

Офлайн

#9 Июль 12, 2012 09:21:29

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

Подскажите механизм

str(home.text).replace('\n', '').replace('                    ', '')

Офлайн

#10 Июль 12, 2012 10:48:16

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Подскажите механизм

odnochlen
str(home.text).replace('\n', '').replace('                    ', '')

Ооо… да уж, учиться и набираться опыта.
А вот это сократить возможно?

    w1 = str(home.text).replace('\n', '').replace('                    ', '')
    if w1:
        w2.append(w1)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version