Оптимизация скрипта на 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()
Может я вовсе делаю не то, что нужно на самом деле...