Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 4, 2024 15:08:18

chemyanehacker
Зарегистрирован: 2024-10-04
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг сайтов и сохранение найденных ссылок

Здравствуйте форумчане,

нужна ваша помощь, так как я новичок в этом, но очень хочу научиться и разобраться, есть разного рода ссылки на сайты, НАПРИМЕР: https://my.mail.ru/ да и в принципе для примера любой сайт подойдёт с наличием рекламы, тот же: https://vk.com на которых нужно собирать ссылки из рекламных баннеров.
Перечитал много разных тем и перепробовал много разных способов, на данном этапе по многим советам дошёл до selenium, учитывая разные попытки и ошибки накидал такой код, с использованием WebDriverWait и TimeoutException, и всё равно не могу получить желаемый результат.

Вот мой код на данный момент:


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

user_agent = ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3’

chrome_options = Options()
chrome_options.add_argument(f'user-agent={user_agent}')

driver = webdriver.Chrome(options=chrome_options)

driver.get('https://my.mail.ru/')

try:
element = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH, '//*/div//div/div/div/div/div/div/div/div/div/a/div/div/div/span')))
print(element.text)
except TimeoutException:
print(“Время ожидания истекло!”)


код выводит любой текст и заголовок по заданному XPATH, но ссылку из рекламного баннера ни в какую.
если я правильно понимаю, то проблема может быть в том, что с каждым новым открытием браузера и страницы, да и вообще за время присутствия на странице рекламные баннеры постоянно обновляются, и соответственно меняется XPATH, код не может поймать на странице тот XPATH, который я скопировал в коде страницы, потому что или его уже вообще не существует, или потому что в данный момент рекламный банер другой и соответственно другой XPATH. Может кто сталкивался с такими задачами или в принципе знает как с этим бороться? Может я зря использую selenium и есть какой то другой способ…Помогите…

Офлайн

#2 Окт. 4, 2024 21:05:13

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2739
Репутация: +  183  -
Профиль   Отправить e-mail  

Парсинг сайтов и сохранение найденных ссылок

Подключайся к сайту через прокси и анализируй список GET запросов которые от туда идут.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Окт. 4, 2024 21:28:45

chemyanehacker
Зарегистрирован: 2024-10-04
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг сайтов и сохранение найденных ссылок

Rodegast
Подключайся к сайту через прокси и анализируй список GET запросов которые от туда идут.
Если не сложно, можно чуть-чуть подробнее… просто использовать прокси с обычным браузером? может с каким то браузером это лучше работает? наверное самый главный вопрос, как анализировать GET запросы? как в GET запросе распознать ссылку на рекламу?

Отредактировано chemyanehacker (Окт. 4, 2024 21:37:34)

Офлайн

#4 Окт. 4, 2024 22:33:15

chemyanehacker
Зарегистрирован: 2024-10-04
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг сайтов и сохранение найденных ссылок

Rodegast
Подключайся к сайту через прокси и анализируй список GET запросов которые от туда идут.
я нашёл, как в GET запросах определять данные по рекламным баннерам, есть идеи, как мне всё это собрать в одну кучу, поиск определённых GET запросов, по какому то параметру, например по наличию совпадения в request url, или по какому то более простому параметру, как мне сделать так, чтобы далее определять все, “сontent_1__click_url”, “сontent_2__click_url” и все остальные в response, открывать их и уже конченые ссылки сохранять в таблицу, потому что все конечные ссылки идут через rambler, yandex и другие промежуточные сервисы, ссылки на которые мне не нужны, мне нужны конечные ссылки на рекламодателей… в общем получается, что всё сводится к тому, что мне нужно собрать все конечные ссылки из “сontent_n__click_url”

Отредактировано chemyanehacker (Окт. 4, 2024 22:35:34)

Офлайн

#5 Окт. 4, 2024 23:00:58

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2739
Репутация: +  183  -
Профиль   Отправить e-mail  

Парсинг сайтов и сохранение найденных ссылок

> просто использовать прокси с обычным браузером?

Тебе нужно запросы от броузера перехватывать. Тут может быть много вариантов от прокси до CDP. Наверное проще всего будет использовать selenium-wire, но только он медленный.

> получается, что всё сводится к тому, что мне нужно собрать все конечные ссылки из “сontent_n__click_url”

Если тебе нужна ссылка на странице, то рендерь её через selenium, а потом парсь через beautifulsoup4.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Окт. 8, 2024 13:16:20

chemyanehacker
Зарегистрирован: 2024-10-04
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг сайтов и сохранение найденных ссылок

Rodegast
>Если тебе нужна ссылка на странице, то рендерь её через selenium, а потом парсь через beautifulsoup4.

не могли бы вы подсказать, как рендерить через selenium… по какому признаку ил параметру…

Офлайн

#7 Окт. 9, 2024 15:31:25

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1348
Репутация: +  118  -
Профиль   Отправить e-mail  

Парсинг сайтов и сохранение найденных ссылок

Дай ссылку на сайт, и покажи какой банер нужно достать

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version