Найти - Пользователи
Полная версия: Парсинг сайтов и сохранение найденных ссылок
Начало » 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.
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