Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 22, 2016 15:53:51

Dathy
Зарегистрирован: 2016-02-24
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите пожалуйста с GRAB

 # coding: utf-8
from grab import Grab
g = Grab()
g.setup(reuse_cookies=False)
g.go('https://yandex.ru')
im=g.doc.select('/html/body/div[1]/div[3]/div/div[3]/div/div/div/a/img')
print im.attr('src')

пытаюсь получить ссылку на картинку баннера в яндексе и grab пишет: weblib.error.DataNotFound: Could not get first item for /html/body/div/div
/div/div/div/div/div/a/img query of class XpathSelector…
Подскажите пожалуйста что не так?

Офлайн

#2 Окт. 22, 2016 18:51:14

Dathy
Зарегистрирован: 2016-02-24
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите пожалуйста с GRAB

Получается grab не видит js код? или как это понимать?

Офлайн

#3 Окт. 23, 2016 01:17:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

помогите пожалуйста с GRAB

  
>>> from grab import Grab
>>> 
>>> g = Grab()
>>> g.setup(reuse_cookies=False)
>>> 
>>> g.go('https://yandex.ru')
<grab.document.Document object at 0xb6e3f714>
>>> 
>>> im = g.doc.select('body/div[1]/div[3]/div/div[3]/div/div/div/div/noscript/a/img')
>>> data = im.attr('src')
>>> print data[:24]
https://awaps.yandex.net
>>>

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

Используй относительные пути (почитай про xpath)
  
>>> from grab import Grab
>>> 
>>> g = Grab()
>>> g.setup(reuse_cookies=False)
>>> 
>>> g.go('https://yandex.ru')
<grab.document.Document object at 0xb6ec3714>
>>> 
>>> im = g.doc.select('..//noscript/a/img')
>>> data = im.attr('src')
>>> print data[:24]
https://awaps.yandex.net
>>>



Отредактировано py.user.next (Окт. 23, 2016 01:19:49)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version