Форум сайта python.su
Здравствуйте форумчане,
нужна ваша помощь, так как я новичок в этом, но очень хочу научиться и разобраться, есть разного рода ссылки на сайты, НАПРИМЕР: 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 и есть какой то другой способ…Помогите…
Офлайн
Подключайся к сайту через прокси и анализируй список GET запросов которые от туда идут.
Офлайн
RodegastЕсли не сложно, можно чуть-чуть подробнее… просто использовать прокси с обычным браузером? может с каким то браузером это лучше работает? наверное самый главный вопрос, как анализировать GET запросы? как в GET запросе распознать ссылку на рекламу?
Подключайся к сайту через прокси и анализируй список GET запросов которые от туда идут.
Отредактировано chemyanehacker (Окт. 4, 2024 21:37:34)
Офлайн
Rodegastя нашёл, как в GET запросах определять данные по рекламным баннерам, есть идеи, как мне всё это собрать в одну кучу, поиск определённых GET запросов, по какому то параметру, например по наличию совпадения в request url, или по какому то более простому параметру, как мне сделать так, чтобы далее определять все, “сontent_1__click_url”, “сontent_2__click_url” и все остальные в response, открывать их и уже конченые ссылки сохранять в таблицу, потому что все конечные ссылки идут через rambler, yandex и другие промежуточные сервисы, ссылки на которые мне не нужны, мне нужны конечные ссылки на рекламодателей… в общем получается, что всё сводится к тому, что мне нужно собрать все конечные ссылки из “сontent_n__click_url”
Подключайся к сайту через прокси и анализируй список GET запросов которые от туда идут.
Отредактировано chemyanehacker (Окт. 4, 2024 22:35:34)
Офлайн
> просто использовать прокси с обычным браузером?
Тебе нужно запросы от броузера перехватывать. Тут может быть много вариантов от прокси до CDP. Наверное проще всего будет использовать selenium-wire, но только он медленный.
> получается, что всё сводится к тому, что мне нужно собрать все конечные ссылки из “сontent_n__click_url”
Если тебе нужна ссылка на странице, то рендерь её через selenium, а потом парсь через beautifulsoup4.
Офлайн
Rodegast
>Если тебе нужна ссылка на странице, то рендерь её через selenium, а потом парсь через beautifulsoup4.
Офлайн
Дай ссылку на сайт, и покажи какой банер нужно достать
Офлайн