Как с помощью Python собрать данные с любого сайта
Мы всегда ищем информационные данные. Существует множество способов сбора данных. Одним из многих источников являются данные с веб-сайтов, и мы знаем все источники. Например, у нас есть множество сайтов, таких как новостные сайты, социальные сети, электронная коммерция и так далее. Таким образом, мы можем легко собирать данные. Эти сайты полезны, и мы легко получаем информационные данные с этих сайтов. Но чтобы собрать эти данные, мы должны использовать методы веб-скрейпинга, предпочтительно с использованием прокси-серверов, когда процесс скрейпинга требует отправки большого количества запросов на целевой сайт.
Мы знаем источник. Откуда должны быть собраны данные. Но если мы собираем эти данные вручную - это отнимет у нас больше времени. Чтобы решить эту проблему, в Python есть две библиотеки - BeautifulSoup и Selenium. С их помощью мы можем легко собирать данные.
Под веб-скрейпингом понимается извлечение или сбор веб-данных в формате, более полезном для пользователя. Например, вы можете собрать информацию о продукте с сайта электронной коммерции в таблицу excel. Хотя веб-скрейпинг можно выполнять вручную, в большинстве случаев лучше использовать автоматизированные инструменты.
Существуют некоторые плюсы и минусы веб-скрейпинга или сбора данных в Интернете:
- Скорость.
- Извлечение данных в масштабе.
- Экономическая эффективность.
- Гибкость и систематический подход.
- Надежность и устойчивость к внешним воздействиям.
- Низкие эксплуатационные расходы.
- Автоматическое получение структурированных данных.
Как с помощью Python собрать данные с любого сайта
Чтобы собрать данные с любого сайта с помощью Python, выполните следующие действия:
Шаг 1 - Установка необходимых библиотек Python
Прежде всего, откройте терминал или командную строку и выполните следующую команду для установки необходимых библиотек Python, которые помогут скрапировать или собирать веб-данные:
pip install BeautifulSoup4
pip install requests
Если мы используем Anaconda Prompt, нам нужно выполнить следующую команду в терминале или командной строке, чтобы установить BeautifulSoup4 и библиотеки запросов для сбора веб-данных:
conda install BeautifulSoup4
conda install requests
Шаг 2 - Импорт библиотек Python
После установки необходимых библиотек python, импортируйте библиотеки, необходимые для BeautifulSoup:
from bs4 import BeautifulSoup as bs
import pandas as pd
pd.set_option('display.max_colwidth', 500)
import time
import requests
import random
Шаг 3 - Доступ к веб-страницам
Теперь получите доступ к веб-страницам для сбора веб-данных с помощью BeautifulSoup; используйте следующий код для сбора веб-данных по их url:
page = requests.get("http://mysite.com/")page# <Response [200]>
Он возвращает код состояния ответа, позволяющий нам узнать, успешно ли выполнен запрос. Здесь мы ищем ответ [200], означающий, что мы успешно достигли сайта.
Шаг 4 - Парсинг веб-страницы
После того как страница была открыта, используйте следующий код для парсинга страницы сайта с помощью BeautifulSoup:
soup = bs(page.content)soup
При выполнении приведенного выше кода будет возвращен распечатанный текстовый документ в HTML-коде.
Шаг 5 - Навигация по Soup
Теперь нам нужно найти то, что мы ищем, в разобранном HTML-документе. Давайте начнем с поиска заголовка страницы.
Простой способ найти то, что мы ищем:
- Посетите веб-страницу и найдите нужный фрагмент информации (в нашем случае - заголовок).
- Выделите этот фрагмент информации (заголовок страницы).
- Щелкните правой кнопкой мыши и выберите пункт Inspect
В результате откроется новое окно, которое выглядит следующим образом:
Выделенный раздел - это то место, где мы найдем заголовок искомой страницы. Просто нажмите на стрелку слева от выделенного раздела, чтобы увидеть заголовок в коде.
Пример 1 - Доступ к указанному атрибуту HTML-тегов
Мы видим, что под одним тегом находится множество атрибутов, вопрос в том, как получить доступ только к тому атрибуту, который нам нужен. В BeautifulSoup есть функции 'find' и 'find_all'.
Теперь мы хотим найти строку h1 с помощью find:
# Поиск определенных атрибутов тегов
soup.find(‘h1’, class_= ‘title’)
Вывод будет таким:
Out[10]: <h1 class=”title”>Как с помощью Python собрать данные с любого сайта</h1>
Из этого видно, что мы смогли успешно найти и извлечь код и текст, содержащий заголовок нужной нам страницы.
В другом примере мы хотим найти автора страницы, поэтому мы можем повторить шаги, описанные ранее, чтобы получить имена авторов для каждого заголовка страницы:
authors = [i.text for i in soup.find_all(class_='author')]
Пример 2 - Доступ к нескольким веб-страницам
Теперь, когда мы знаем, как получить данные с определенной веб-страницы, мы можем перейти к данным со следующего набора страниц. Как мы видим на сайте, все котировки хранятся не на одной странице. Мы должны иметь возможность переходить на разные страницы сайта, чтобы получить больше котировок.
Обратите внимание, что url для каждой новой страницы содержит изменяющееся значение:
- https://makecodes.ru/page/2/
- https://makecodes.ru/page/3/
- и так далее.
Зная это, мы можем создать простой список URL-адресов для итерации, чтобы получить доступ к различным страницам сайта:
urls=[f"//makecodes.ru/page/{i}/" for i in range(1,11)]urls
Этот код возвращает список страниц с веб-сайтов.
Из списка страниц мы можем создать еще один цикл for для сбора необходимого количества заголовков и их соответствующих авторов.
Вывод
Благодаря этому пошаговому руководству мы немного узнали о веб-скрейпинге. Несмотря на то, что пример, который мы использовали, может быть довольно простым, использованные приемы будут применимы ко многим различным веб-сайтам в Интернете. Для более сложных веб-сайтов, требующих широкого взаимодействия с пользователем, понадобится другая библиотека Python под названием Selenium. Однако большинству веб-сайтов BeautifulSoup понадобится только для парсинга или сбора данных веб-страниц. Приведенного здесь руководства должно быть достаточно, чтобы начать работу.
суп.найти('h1', class_= 'название')
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.