Библиотека Nodriver

Tips & Tricks | proDream | 26 Август 2024 | Просмотров: 63

В этом посте я покажу пример парсинга с использованием библиотеки NoDriver.


Те, кто занимается парсингом сайтов не раз сталкивались с проблемами "палящегося" Selenum'а или необходимости скачать новый вебдрайвер для браузера, также Selenum достаточно медленный. Решение всех этих проблем предлагает библиотека Nodriver.

Nodriver — это библиотека для высокопроизводительного веб-скрапинга и автоматизации, не использующая традиционные методы WebDriver или Selenium. Она обходит защитные меры, такие как Captcha и Cloudflare, напрямую взаимодействуя с браузером и поддерживая асинхронные операции для повышения скорости. Библиотека проста в использовании благодаря продуманным настройкам по умолчанию, но также позволяет продвинутым пользователям настраивать её под свои задачи.

Репозиторий библиотеки: https://github.com/ultrafunkamsterdam/nodriver

 

Установка библиотеки:

Для установки достаточно выполнить команду:

pip install nodriver

 

Пример получения изображений из Яндекс Картинок:

import asyncio
from pathlib import Path

import httpx
import nodriver as uc


async def main():
    url = 'https://yandex.ru/images/search?from=tabbar&text=котики&isize=eq&iw=1920&ih=1080'

    browser = await uc.start()
    page = await browser.get(url)

    elems = await page.select_all('.JustifierRowLayout-Item')

    for i, elem in enumerate(elems):
        a = await elem.query_selector('a')
        image_page = await browser.get(f"https://yandex.ru{a.attrs.get('href')}", new_window=True)
        image = await image_page.select('.MMImage-Origin')
        file_resp = httpx.get("https:" + image.attrs.get('src'))
        with open(Path('downloads') / f"{i}.png", 'wb') as file:
            file.write(file_resp.content)
        await image_page.close()


asyncio.run(main())

 

Создаём асинхронную функцию main.
В ней указываем url страницы с которой начнём парсинг.
Затем создаём экземпляр браузера и открываем в нём страницу.
Ищем нужные элементы, в данном случае содержащие превьюшки изображений.
Далее, итерируясь по полученным элементам, находим в них ссылки на страницы изображений и открываем в новом окне.
Затем, находим само изображение и скачиваем его при помощи httpx.

Данный код всего лишь пример работы с библиотекой, которая упростит жизнь разработчику парсеров.


Добавить комментарий:

Войдите чтобы добавить комментарий.

Комментарии пользователей:

Нет комментариев

Реклама


Соседние посты

Пагинация в aiogram 3
Библиотека Nodriver
Библиотека itsdangerous

Обсуждение

Обсудить или задать вопрос можно в комментариях к посту в Telegram


Теги

python httpx библиотека яндекс картинки webdriver скрапинг nodriver парсинг веб скрапинг selenium веб драйвер

Ссылки


Реклама