Найти - Пользователи
Полная версия: Подскажите механизм
Начало » Python для новичков » Подскажите механизм
1 2 3
funnyman
paraman как я понял нужно передать супу содержимое странички полученной в свою очередь грабом.. так вот целиком html содержимое можно передать в переменную вот так: html = g.response.body.

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

Честно, если бы я сейчас был на твоем месте, то меня смущал бы тот факт что я используя две такие мощные библиотеки в одном проекте, и при этом юзаю например граб не на полную мощь, а только так что бы перейти по ссылке и все.. для переходов и получения контента, вроде бы можно и встроенный urllib заюзать
odnochlen
funnyman
для переходов и получения контента, вроде бы можно и встроенный urllib заюзать
Можно, конечно, только после граба или requests делать это совсем не хочется.
А парсинг с помощью внешнего парсера занимает ровно на 1 строчку больше, чем с помошью lxml, “встроенного” в граб.
paraman
Коллеги по цеху. Ваши комментарии ценны. Я действительно написал парсер с требуемыми для меня условиями и чёрт побери очень рад тому, что смог это сделать, но как сказал уважаемый funnyman, опыт. Мне нужен опыт.
Сейчас скрипт (31 строка) выполняется:
real    0m13.333s
user    0m10.581s
sys     0m0.024s

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

Если
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('                    ', '')

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

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

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

    w1 = str(home.text).replace('\n', '').replace('                    ', '')
    if w1:
        w2.append(w1)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB