Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 1, 2016 09:35:58

aydat
Зарегистрирован: 2016-09-28
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Xpatch. динамический id и сохр. капчу grab

Всем привет, есть такой элемент

 <img src="/bitrix/tools/captcha.php?captcha_code=07d851f5f4fcb59cbaf9c4092fcc0546" alt="">
Нужно спарсить src

 //*[@id="voting_current_6174_form"]/form/div[2]/div[1]/img

6174 - динамич формируется.

Как правильно составить xpatch запрос?
на выходе будет url с картинкой, как потом можно будет ее сохранить через grab?

Пробовал так:

 //*[starts-with(@id, "voting_current_")]/form/div[2]/div[1]/img

Отредактировано aydat (Дек. 1, 2016 09:48:13)

Офлайн

#2 Дек. 1, 2016 13:44:24

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

Xpatch. динамический id и сохр. капчу grab

Не xpatch, а xpath (XML Path Language).
Приведи всю форму, src - это обычный атрибут. Атрибут обозначается через @.

  
>>> import lxml.html
>>> 
>>> doc = lxml.html.fromstring('<img src="/bitrix/tools/captcha.php?captcha_code=07d851f5f4fcb59cbaf9c4092fcc0546" alt="">')
>>> 
>>> doc.get('src')
'/bitrix/tools/captcha.php?captcha_code=07d851f5f4fcb59cbaf9c4092fcc0546'
>>> 
>>> doc.xpath(r'../img/@src')
['/bitrix/tools/captcha.php?captcha_code=07d851f5f4fcb59cbaf9c4092fcc0546']
>>> 
>>> doc.xpath(r'../img/@src')[0]
'/bitrix/tools/captcha.php?captcha_code=07d851f5f4fcb59cbaf9c4092fcc0546'
>>>



Отредактировано py.user.next (Дек. 1, 2016 13:44:36)

Офлайн

#3 Дек. 1, 2016 15:20:48

aydat
Зарегистрирован: 2016-09-28
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Xpatch. динамический id и сохр. капчу grab

py.user.next
Не xpatch, а xpath (XML Path Language).Приведи всю форму, src - это обычный атрибут. Атрибут обозначается через @.

форма

Как через grab можно скачать картинку и забирать value, если id динамический?

 <input type="hidden" name="bxajaxid" id="bxajaxid_d8c2e0b8b9a6ff4de550b84d88e8d2bc_11548" value="d8c2e0b8b9a6ff4de550b84d88e8d2bc">

Отредактировано aydat (Дек. 1, 2016 15:37:28)

Офлайн

#4 Дек. 1, 2016 16:12:14

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

Xpatch. динамический id и сохр. капчу grab

aydat
Как через grab можно скачать картинку и забирать value, если id динамический?
Зачем тебе вообще эта динамическая часть? Она никакой роли там не играет. Что картинку, что value можно вообще без учёта динамической части скачать.



Офлайн

#5 Дек. 1, 2016 16:17:55

aydat
Зарегистрирован: 2016-09-28
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Xpatch. динамический id и сохр. капчу grab

py.user.next

value нужна для пост запроса
а как это все можно спарсить?

Отредактировано aydat (Дек. 1, 2016 16:19:43)

Офлайн

#6 Дек. 2, 2016 09:43:56

aydat
Зарегистрирован: 2016-09-28
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Xpatch. динамический id и сохр. капчу grab

Актуально…..

Офлайн

#7 Дек. 2, 2016 11:28:14

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

Xpatch. динамический id и сохр. капчу grab

aydat
value нужна для пост запроса
Там часть id, которая не меняется, уже содержит строку, равную value. И сама ссылка тоже.

  
>>> import lxml.html
>>> 
>>> text = """
... <input type="hidden" name="bxajaxid" id="bxajaxid_d8c2e0b8b9a6ff4de550b84d88e8d2bc_11548" value="d8c2e0b8b9a6ff4de550b84d88e8d2bc">
... """
>>> 
>>> doc = lxml.html.fromstring(text)
>>> value = doc.xpath(r'../input[starts-with(@id, "bxajaxid_")]/@value')[0]
>>> value
'd8c2e0b8b9a6ff4de550b84d88e8d2bc'
>>>



Офлайн

#8 Дек. 2, 2016 11:56:51

aydat
Зарегистрирован: 2016-09-28
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Xpatch. динамический id и сохр. капчу grab

py.user.next
Спасибо, вроде получилось

Отредактировано aydat (Дек. 2, 2016 12:00:10)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version