Рубрики
Без рубрики

Как очистить данные с веб-сайта с помощью Python

Узнайте, как очистить данные с веб-сайта с помощью Python

Автор оригинала: Oluwagbenga Joloko.

Вступление

Этот учебник расскажет вам, как очистить данные из таблицы в Википедии. Страница, с которой мы будем соскабливать данные, – это Список стран и зависимостей по населению . Вы можете перейти по ссылке, чтобы получить представление о том, как выглядит страница. Таблица с данными, подлежащими очистке, приведена ниже –

Снимок экрана 2018-09-05 в 2.24.56 вечера.png

Используемые пакеты

  • Csv – Модуль, входящий в стандартную библиотеку python для чтения и записи данных в файловый объект в формате csv.

  • Beautifulsoup – Библиотека для извлечения данных из html-и xml-файлов.

  • Requests – Библиотека для выполнения HTTP-запросов в python.

Установка

Предполагается, что у вас уже установлен Python3 на вашем компьютере, если не следовать здесь для установки Python 3 на OSx. Выполните следующие команды для установки библиотеки beautifulsoup и запросов

pip install requests
pip install beautifulsoup4

Очистите данные

Перейдите в определенный каталог на вашем компьютере и выполните приведенную ниже команду, чтобы создать новый файл с именем main.py

touch main.py

В main.py добавьте следующий код:

import csv
import requests
from bs4 import BeautifulSoup


def scrape_data(url):

    response = requests.get(url, timeout=10)
    soup = BeautifulSoup(response.content, 'html.parser')

    table = soup.find_all('table')[1]

    rows = table.select('tbody > tr')

    header = [th.text.rstrip() for th in rows[0].find_all('th')]

    with open('output.csv', 'w') as csv_file:
        writer = csv.writer(csv_file)
        writer.writerow(header)
        for row in rows[1:]:
            data = [th.text.rstrip() for th in row.find_all('td')]
            writer.writerow(data)


if __name__=="__main__":
    url = "https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_population"
    scrape_data(url)

давайте разберем это на части и посмотрим, как это работает строка за строкой.

  • Линии 1 – 3 Импортирует все пакеты, необходимые для запуска приложения.

  • Строка 6 Мы определяем функцию scrape_data , которая принимает параметр url .

  • Строка 8 Мы делаем запрос get к url , используя метод get библиотеки requests .

При выполнении HTTP – запросов с помощью библиотеки запросов важно установить тайм-аут на случай, если сервер не ответит своевременно. Это предотвращает бесконечное зависание вашей программы в ожидании ответа от сервера.

  • Строка 9 Мы создаем древовидную структуру beautifulsoup из содержимого ответа с сервера. Этот объект легко ориентировать и искать.

  • Строка 11 Мы ищем через красивый объект суп , чтобы найти вторую таблицу в документе, которая содержит нужные нам данные, используя метод it’s find_all . Метод beautifulsoup объекта find_all ищет все html-теги, соответствующие фильтру/поисковому термину в древовидной структуре.

  • Строка 13 Эта строка кода выбирает все элементы tr , где родителем является элемент tbody из таблицы . tr elements представляет строки таблицы.

  • Строка 15 Первая строка обычно содержит ячейки заголовка. Мы серчим через первую строку в списке строк, чтобы получить текстовые значения всех th элементов в этой строке. мы также гарантируем удаление всех конечных пробелов в тексте с помощью метода rstrip python string.

  • Линия 17 – 22 Это открывает файл и создает новый файловый объект. Режим w используется для обеспечения того, чтобы файл был открыт для записи. Сначала мы пишем строку заголовка, затем перебираем остальные строки, игнорируя первую строку, чтобы получить данные, содержащиеся внутри, и записываем данные для всех этих строк в файловый объект.

  • Строка 25 -27 Мы проверяем, что модуль запущен как основная программа, и вызываем функцию scrape_data с указанным URL для очистки данных.

на терминале выполните приведенную ниже команду для очистки данных

python main.py

Выходной файл с именем output.csv , содержащий данные, должен быть создан в корневой папке

Снимок экрана 2018-09-05 в 8.45.41 вечера.png

Вывод

Прежде чем начать соскабливать данные с любого веб-сайта, обязательно изучите HTML-разметку/содержимое веб-сайта, чтобы определить местоположение нужных вам данных. Если у вас есть какие-либо вопросы или комментарии, пожалуйста, добавьте их в раздел комментариев ниже.