Оптимизация скрипта на Python + Selenium

Написал скрипт для следующей задачи: есть список сайтов, нужно зайти на каждый и посмотреть, подключены ли метрики к сайту. В DevTools на вкладке Source есть записи вроде 'mc.yandex.ru', 'bitrix', 'amo.crm'.

Не разобрался, как распарсить эту вкладку Source. Посмотрел, что в <head> так же отображаются подключение js скриптом метрики.

Но обычным реквестом эту инфу не подтянуть + сайты могут быть динамические, поэтому решил использовать Selenium.

Но с selenium обход урлов занимает много времени, переписал на асинхронное, вроде стало лучше, но все равно медленно.

Как можно оптимизировать этот процесс?

async def check_link(link, valid_links, driver):
    try:
        time.sleep(0.2)
        driver.get(link)
        time.sleep(0.2)
        # Нажатие клавиши Enter
        ActionChains(driver).send_keys(Keys.ENTER).perform()
        # Нажатие клавиши Escape
        ActionChains(driver).send_keys(Keys.ESCAPE).perform()
        time.sleep(0.2)
        # Получение HTML-кода страницы
        html = driver.page_source
        
        # Проверка наличия требуемых значений в блоке head
        if any(value in html for value in ['mc.yandex.ru', 'bitrix', 'amo.crm']):
            valid_links.append(link)
    except WebDriverException as e:
        print(f"Ошибка при обработке ссылки {link}: {e}")

async def process_links(links, valid_links, driver):
    tasks = []
    for link in links:
        task = asyncio.create_task(check_link(link, valid_links, driver))
        tasks.append(task)

    await asyncio.gather(*tasks)


async def main():
    driver = webdriver.Chrome()
    links_tier_1, links_tier_2 = get_company_links('1.xlsx')

    valid_links_tier_1 = []
    valid_links_tier_2 = []
    
    await process_links(links_tier_1, valid_links_tier_1, driver)
    await process_links(links_tier_2, valid_links_tier_2, driver)

    driver.quit()

Может я вовсе делаю не то, что нужно на самом деле...


Ответы (0 шт):