CoderCastrov logo
CoderCastrov
Питон

Как парсить веб-страницы с использованием ProxyCrawl в Python

Как парсить веб-страницы с использованием ProxyCrawl в Python
просмотров
4 мин чтение
#Питон

Изучите простой способ парсинга веб-страниц с использованием JavaScript

В связи с растущей популярностью современных фреймворков JavaScript, таких как React, Angular и Vue, все больше и больше веб-сайтов создается динамически с использованием JavaScript. Это создает проблему для парсинга веб-страниц, поскольку HTML-разметка недоступна в исходном коде. Поэтому мы не можем напрямую парсить эти веб-страницы JavaScript и должны сначала отобразить их как обычную HTML-разметку. В этой статье мы расскажем, как отображать веб-страницы JavaScript с помощью ProxyCrawl, удобного веб-сервиса, который можно использовать для помощи в парсинге веб-страниц JavaScript.


Демонстрационный сайт, который мы будем использовать в этом руководстве, - это http://quotes.toscrape.com/js/. Если вы откроете этот веб-сайт, щелкните правой кнопкой мыши на веб-странице и выберите «Просмотреть исходный код», вы увидите только некоторый JavaScript-код, а не HTML-разметку. К счастью для этого сайта, данные включены в тег <script>. Однако для многих веб-сайтов, особенно созданных с использованием Angular, в JavaScript-коде мало данных, и их необходимо отобразить, прежде чем их можно будет парсить. Например:


Прежде чем начать, нам нужно установить пакеты, необходимые для парсинга веб-страниц. Рекомендуется создать виртуальное окружение и установить пакеты там, чтобы они не повредили системные библиотеки. Для простоты мы будем использовать conda, чтобы создать виртуальное окружение. Чтобы упростить запуск интерактивного кода Python, мы также установим iPython:

(base) $ **conda create --name js_scrape python=3.10**
(base) $ **conda activate js_scrape**
(js_scrape) $ **pip install -U requests lxml**
(js_scrape) $** pip install ipython**
(js_scrape) $ **ipython**
  • requests — Используется для загрузки содержимого веб-страницы.
  • lxml — Используется для парсинга отображенной HTML-разметки с использованием XPath.

Давайте сначала попробуем немного изучить API Crawling ProxyCrawl.

Для API ProxyCrawl первые 1000 запросов бесплатны. И если вы добавите свои платежные данные, вы получите дополнительно 9000 бесплатных запросов. Поэтому, если вам просто нужно время от времени парсить некоторые веб-страницы JavaScript, ProxyCrawl должен быть достаточным, и вам не нужно устанавливать какие-либо другие пакеты и настраивать продвинутые параметры. Однако, если у вас есть проекты, которые нужно часто парсить веб-страницы JavaScript, стоимость может быть значительной. Если вы или ваша команда не можете себе позволить это или хотите сэкономить немного денег, вы можете использовать Selenium в качестве альтернативы.

Для использования ProxyCrawl вам сначала нужно войти в систему. Вы можете войти в систему с помощью учетной записи Google или GitHub. После входа в систему вы попадете на страницу панели управления. Нажмите на «Crawling API», чтобы продолжить:

И вы попадете на страницу API Crawling ProxyCrawl. На этой странице отображаются детали использования API. Вам нужно будет часто возвращаться на эту страницу, если вы используете ProxyCrawl в своем проекте, чтобы следить за использованием и стоимостью.

Теперь нажмите «Start crawling now», и вы откроете страницу документации API Crawling. Там есть некоторые инструкции о том, как использовать API. Важно прокрутить вниз и найти раздел "Authentication", где вы можете увидеть токены, необходимые для парсинга. Здесь мы будем использовать токен JavaScript, потому что мы собираемся парсить веб-страницу JavaScript.

С помощью токена JavaScript мы теперь можем начать парсить нашу веб-страницу JavaScript. Давайте сначала посмотрим, что мы получим, если не будем использовать прокси. Затем мы адаптируем код соответствующим образом для парсинга веб-страницы JavaScript:

Если код выглядит незнакомым для вас, вам может быть полезно ознакомиться с этой статьей, в которой кратко, но понятно рассказывается о requests, lxml и XPath.

Как и ожидалось, мы не можем парсить данные с веб-сайта JavaScript с помощью обычного кода парсинга. Нам нужно использовать прокси, чтобы сначала отобразить JavaScript-код как HTML-разметку. Теперь давайте использовать полученный выше токен JavaScript:

Важные замечания относительно кода:

  • Мы должны передать домен ProxyCrawl в качестве префикса для конечного URL. Домен можно найти в документации ProxyCrawl. Он одинаков для всех.
  • Важно указать токен JavaScript в конечном URL. Токен указан здесь в виде обычного текста только для демонстрационных целей. На практике НИКОГДА не раскрывайте токен таким образом в своем коде. Вместо этого вы должны указать токен с помощью переменной среды. Рекомендуется использовать pydantic для управления переменными среды и учетными данными.

При выполнении кода данные могут быть успешно спарсены, что означает, что веб-страница JavaScript успешно отображена как HTML-разметка:

Теперь вернемся на панель управления ProxyCrawl и посмотрим использование API. Вам может потребоваться подождать несколько минут, пока статус обновится.

Поскольку ProxyCrawl является коммерческим и не бесплатным для использования, вы должны внимательно следить за использованием, чтобы не переплатить. И еще раз напоминаем, НИКОГДА не раскрывайте токен в любом общедоступном репозитории, чтобы не платить за случайное или злонамеренное использование другими.


В этой короткой статье мы показали, как использовать ProxyCrawl для отображения веб-страницы JavaScript, чтобы ее можно было спарсить с помощью нашего обычного кода парсинга. Под капотом веб-страница JavaScript отображается с помощью некоторого безголового браузера на сервере ProxyCrawl, что можно сделать с помощью пакета Selenium. Поэтому, если у вас ограниченный бюджет или вам часто нужно парсить веб-страницы JavaScript, стоит потратить немного больше времени на настройку Selenium локально и использовать его для отображения веб-страниц JavaScript. В отдельной статье скоро будет опубликовано подробное руководство по этой теме.


Связанная статья: