Найти - Пользователи
Полная версия: Парсинг сайтов и сохранение найденных ссылок
Начало » Python для экспертов » Парсинг сайтов и сохранение найденных ссылок
1
chemyanehacker
Здравствуйте форумчане,

нужна ваша помощь, так как я новичок в этом, но очень хочу научиться и разобраться, есть разного рода ссылки на сайты, НАПРИМЕР: 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 и есть какой то другой способ…Помогите…
Rodegast
Подключайся к сайту через прокси и анализируй список GET запросов которые от туда идут.
chemyanehacker
Rodegast
Подключайся к сайту через прокси и анализируй список GET запросов которые от туда идут.
Если не сложно, можно чуть-чуть подробнее… просто использовать прокси с обычным браузером? может с каким то браузером это лучше работает? наверное самый главный вопрос, как анализировать GET запросы? как в GET запросе распознать ссылку на рекламу?
chemyanehacker
Rodegast
Подключайся к сайту через прокси и анализируй список GET запросов которые от туда идут.
я нашёл, как в GET запросах определять данные по рекламным баннерам, есть идеи, как мне всё это собрать в одну кучу, поиск определённых GET запросов, по какому то параметру, например по наличию совпадения в request url, или по какому то более простому параметру, как мне сделать так, чтобы далее определять все, “сontent_1__click_url”, “сontent_2__click_url” и все остальные в response, открывать их и уже конченые ссылки сохранять в таблицу, потому что все конечные ссылки идут через rambler, yandex и другие промежуточные сервисы, ссылки на которые мне не нужны, мне нужны конечные ссылки на рекламодателей… в общем получается, что всё сводится к тому, что мне нужно собрать все конечные ссылки из “сontent_n__click_url”
Rodegast
> просто использовать прокси с обычным браузером?

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

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

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

не могли бы вы подсказать, как рендерить через selenium… по какому признаку ил параметру…
xam1816
Дай ссылку на сайт, и покажи какой банер нужно достать
disastrous140
This script seems incredibly useful for gathering data! I'm curious, what kind of filtering or validation processes are built in to ensure the links saved are actually relevant and functional? I'd love to hear more about how you handle broken or unwanted links. Great work! Eggy Car.

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