Найти - Пользователи
Полная версия: Xpatch. динамический id и сохр. капчу grab
Начало » Python для новичков » Xpatch. динамический id и сохр. капчу grab
1
aydat
Всем привет, есть такой элемент
 <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
py.user.next
Не 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'
>>>
aydat
py.user.next
Не xpatch, а xpath (XML Path Language).Приведи всю форму, src - это обычный атрибут. Атрибут обозначается через @.

форма

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

 <input type="hidden" name="bxajaxid" id="bxajaxid_d8c2e0b8b9a6ff4de550b84d88e8d2bc_11548" value="d8c2e0b8b9a6ff4de550b84d88e8d2bc">
py.user.next
aydat
Как через grab можно скачать картинку и забирать value, если id динамический?
Зачем тебе вообще эта динамическая часть? Она никакой роли там не играет. Что картинку, что value можно вообще без учёта динамической части скачать.
aydat
py.user.next

value нужна для пост запроса
а как это все можно спарсить?
aydat
Актуально…..
py.user.next
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'
>>>
aydat
py.user.next
Спасибо, вроде получилось
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