Как найти последнюю фотографию в чате в Телеграм?

clocky

Client
Регистрация
26.09.2019
Сообщения
363
Благодарностей
48
Баллы
28
Друзья, стоит задача взять ссылку именно на последнюю фотографию из чата в телеграмме в веб версии. Как это можно сделать?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

clocky

Client
Регистрация
26.09.2019
Сообщения
363
Благодарностей
48
Баллы
28
В том то и дело, что не очень понимаю как это сделать, пробовал парсить данные, один/картинки. Пробовал через конструктор действий "tagname - img". Но понимаю, что это бред. Получается так, я пишу боту какой то текст, он выдает картинку, мне её надо забрать.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
В том то и дело, что не очень понимаю как это сделать, пробовал парсить данные, один/картинки. Пробовал через конструктор действий "tagname - img". Но понимаю, что это бред. Получается так, я пишу боту какой то текст, он выдает картинку, мне её надо забрать.
через xpath лучше искать. вот хорошая статья для понимания https://zennolab.com/discussion/threads/obzor-zennoposter-xpath-na-primere-jandeks-marketa.37497/
 

clocky

Client
Регистрация
26.09.2019
Сообщения
363
Благодарностей
48
Баллы
28
через xpath лучше искать. вот хорошая статья для понимания https://zennolab.com/discussion/threads/obzor-zennoposter-xpath-na-primere-jandeks-marketa.37497/
Я не очень силен, но получается примерно такой запрос
//div[@my-message-body='historyMessage']/descendant::img[@class='im_message_photo_thumb']
а как выбирать именно последний?
 
Последнее редактирование:

bigloafer

Client
Регистрация
23.07.2020
Сообщения
243
Благодарностей
76
Баллы
28
//div[@my-message-body='historyMessage']/descendant::img[@class='im_message_photo_thumb']
C#:
[last()]
Надо добавить, что xPath вернул true последнему элементу коллекции.
Это как индекс, только форума.
 

clocky

Client
Регистрация
26.09.2019
Сообщения
363
Благодарностей
48
Баллы
28

bigloafer

Client
Регистрация
23.07.2020
Сообщения
243
Благодарностей
76
Баллы
28
Так попробуй
C#:
//div[@my-message-body='historyMessage']/descendant::img[@class='im_message_photo_thumb'][last()]
Это означает последний
C#:
[last()]
Ты в веб версии открыл чат с которого надо выпарсить последнюю картинку?
 

clocky

Client
Регистрация
26.09.2019
Сообщения
363
Благодарностей
48
Баллы
28
74073


Что-то не получается..
 

bigloafer

Client
Регистрация
23.07.2020
Сообщения
243
Благодарностей
76
Баллы
28
Что-то не получается..
Нажми в браузере решение для разработчиков (правый клик, в контекстном меню показать код).
Потом Ctrl + F в самом низу появиться незаметная такая строчка, туда вставляй xpath путь.
Желтым будет подсвечиваться твой выбор. Наведение мышкой на желтый элемент, будет подсвечиваться визуально сам элемент на странице.

отфильтровали
1.png
Добавили в конце last() в скобках [] - и получили последний элемент отвечающий заданным критериям
2.png
 

clocky

Client
Регистрация
26.09.2019
Сообщения
363
Благодарностей
48
Баллы
28
Нажми в браузере решение для разработчиков (правый клик, в контекстном меню показать код).
Потом Ctrl + F в самом низу появиться незаметная такая строчка, туда вставляй xpath путь.
Желтым будет подсвечиваться твой выбор. Наведение мышкой на желтый элемент, будет подсвечиваться визуально сам элемент на странице.

отфильтровали
Посмотреть вложение 74074
Добавили в конце last() в скобках [] - и получили последний элемент отвечающий заданным критериям
Посмотреть вложение 74075
Ну не знаю))) 4 последних?)
 

Вложения

bigloafer

Client
Регистрация
23.07.2020
Сообщения
243
Благодарностей
76
Баллы
28

clocky

Client
Регистрация
26.09.2019
Сообщения
363
Благодарностей
48
Баллы
28

Вложения

clocky

Client
Регистрация
26.09.2019
Сообщения
363
Благодарностей
48
Баллы
28
Ладно, просто счетчик поставил, вроде работает) Но теперь почему-то не сохраняется картинка...
 

bigloafer

Client
Регистрация
23.07.2020
Сообщения
243
Благодарностей
76
Баллы
28
Применяется, твою строку скопировал.
2 из 4 надо сузить круг поиска.
Сперва зацепить за уникальный элемент выше, что-то особенное надо искать, id или class.
Если в свойстве класса или id есть два свойства, например: <div class="gopa_mira prosto_gopa">, то надо использовать contains(class, 'НУЖНЫЙ ОДИНОЧНЫЙ КЛАСС').
Такие [] означают - фильтрацию:

элемент[фильтрация]/элемент[фильтрация].

например:
HTML:
<div class="gopa_mira prosto_gopa">
    <img class="msk">
    <img class="spb">
</div>
так ты выберешь div
HTML:
//div[contains(@class, 'gopa_mira')]
Так все картинки в диве жопа мира.
HTML:
//div[contains(@class, 'gopa_mira')]/img
так последнюю картинку из картинок находящихся в диве с классом "жопа мира"
HTML:
//div[contains(@class, 'gopa_mira')]/img[last()]
 
  • Спасибо
Реакции: clocky

clocky

Client
Регистрация
26.09.2019
Сообщения
363
Благодарностей
48
Баллы
28
В итоге получился такой XPATH

//div [@class='im_history_message_wrap'][last()]/descendant::img[@class='im_message_photo_thumb']

Думаю он будет универсальным, если хотите получить картинку.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)