В предыдущих главах мы узнали о том, как извлекать данные из веб-страниц или просматривать веб-страницы различными модулями Python. В этой главе давайте рассмотрим различные методы обработки данных, которые были очищены.
Вступление
Для обработки данных, которые были очищены, мы должны хранить данные на нашем локальном компьютере в определенном формате, таком как электронная таблица (CSV), JSON или иногда в базах данных, таких как MySQL.
CSV и JSON Обработка данных
Во-первых, мы собираемся записать информацию после захвата с веб-страницы в файл CSV или электронную таблицу. Давайте сначала разберемся на простом примере, в котором мы сначала получим информацию с помощью модуля BeautifulSoup , как это делалось ранее, а затем с помощью модуля Python CSV мы запишем эту текстовую информацию в файл CSV.
Во-первых, нам нужно импортировать необходимые библиотеки Python следующим образом:
import requests from bs4 import BeautifulSoup import csv
В этой следующей строке кода мы используем запросы для выполнения HTTP-запросов GET для URL: https://authoraditiagarwal.com/ , отправляя запрос GET.
r = requests.get(' https://authoraditiagarwal.com/ ')
Теперь нам нужно создать объект Soup следующим образом:
soup = BeautifulSoup(r.text, 'lxml')
Теперь с помощью следующих строк кода мы запишем захваченные данные в файл CSV с именем dataprocessing.csv.
f = csv.writer(open(' dataprocessing.csv ','w')) f.writerow(['Title']) f.writerow([soup.title.text])
После запуска этого сценария текстовая информация или заголовок веб-страницы будут сохранены в вышеуказанном CSV-файле на вашем локальном компьютере.
Точно так же мы можем сохранить собранную информацию в файл JSON. Ниже приведен простой для понимания сценарий Python для выполнения того же, в котором мы собираем ту же информацию, что и в предыдущем сценарии Python, но на этот раз полученная информация сохраняется в JSONfile.txt с помощью модуля JSON Python.
import requests from bs4 import BeautifulSoup import csv import json r = requests.get('https://authoraditiagarwal.com/') soup = BeautifulSoup(r.text, 'lxml') y = json.dumps(soup.title.text) with open('JSONFile.txt', 'wt') as outfile: json.dump(y, outfile)
После запуска этого скрипта информация о захвате, т.е. название веб-страницы, будет сохранена в вышеупомянутом текстовом файле на вашем локальном компьютере.
Обработка данных с использованием AWS S3
Иногда мы можем захотеть сохранить очищенные данные в нашем локальном хранилище для архивирования. Но что, если нам нужно хранить и анализировать эти данные в большом масштабе? Ответ — сервис облачного хранения с именем Amazon S3 или AWS S3 (Simple Storage Service). По сути, AWS S3 — это хранилище объектов, созданное для хранения и извлечения любого количества данных из любого места.
Для хранения данных в AWS S3 мы можем выполнить следующие шаги:
Шаг 1. Сначала нам нужна учетная запись AWS, которая предоставит нам секретные ключи для использования в нашем скрипте Python при хранении данных. Это создаст корзину S3, в которой мы можем хранить наши данные.
Шаг 2 — Далее нам нужно установить библиотеку boto3 Python для доступа к корзине S3. Его можно установить с помощью следующей команды —
pip install boto3
Шаг 3. Далее мы можем использовать следующий скрипт Python для удаления данных с веб-страницы и сохранения их в корзину AWS S3.
Во-первых, нам нужно импортировать библиотеки Python для очистки, здесь мы работаем с запросами и boto3 сохраняем данные в корзину S3.
import requests import boto3
Теперь мы можем соскрести данные с нашего URL.
data = requests.get("Enter the URL").text
Теперь для хранения данных в корзину S3 нам нужно создать клиент S3 следующим образом:
s3 = boto3.client('s3') bucket_name = "our-content"
Следующая строка кода создаст сегмент S3 следующим образом:
s3.create_bucket(Bucket = bucket_name, ACL = 'public-read') s3.put_object(Bucket = bucket_name, Key = '', Body = data, ACL = "public-read")
Теперь вы можете проверить список с названием our-content в вашей учетной записи AWS.
Обработка данных с использованием MySQL
Давайте узнаем, как обрабатывать данные с использованием MySQL. Если вы хотите узнать о MySQL, вы можете перейти по ссылке https://www.tutorialspoint.com/mysql/.
С помощью следующих шагов мы можем очистить и обработать данные в таблицу MySQL:
Шаг 1 — Во-первых, используя MySQL, нам нужно создать базу данных и таблицу, в которой мы хотим сохранить очищенные данные. Например, мы создаем таблицу со следующим запросом —
CREATE TABLE Scrap_pages (id BIGINT(7) NOT NULL AUTO_INCREMENT, title VARCHAR(200), content VARCHAR(10000),PRIMARY KEY(id));
Шаг 2 — Далее нам нужно разобраться с Юникодом. Обратите внимание, что MySQL не обрабатывает Unicode по умолчанию. Нам нужно включить эту функцию с помощью следующих команд, которые изменят набор символов по умолчанию для базы данных, для таблицы и для обоих столбцов —
ALTER DATABASE scrap CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; ALTER TABLE Scrap_pages CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE Scrap_pages CHANGE title title VARCHAR(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE pages CHANGE content content VARCHAR(10000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Шаг 3 — Теперь интегрируйте MySQL с Python. Для этого нам понадобится PyMySQL, который можно установить с помощью следующей команды
pip install PyMySQL
Шаг 4 — Теперь наша база данных с именем Scrap, созданная ранее, готова сохранить данные после извлечения из сети в таблицу с именем Scrap_pages. Здесь, в нашем примере, мы собираемся очистить данные из Википедии, и они будут сохранены в нашей базе данных.
Во-первых, нам нужно импортировать необходимые модули Python.
from urllib.request import urlopen from bs4 import BeautifulSoup import datetime import random import pymysql import re
Теперь создайте соединение, то есть интегрируйте его с Python.
conn = pymysql.connect(host='127.0.0.1',user='root', passwd = None, db = 'mysql', charset = 'utf8') cur = conn.cursor() cur.execute("USE scrap") random.seed(datetime.datetime.now()) def store(title, content): cur.execute('INSERT INTO scrap_pages (title, content) VALUES ''("%s","%s")', (title, content)) cur.connection.commit()
Теперь соединитесь с Википедией и получите данные из нее.
def getLinks(articleUrl): html = urlopen('http://en.wikipedia.org'+articleUrl) bs = BeautifulSoup(html, 'html.parser') title = bs.find('h1').get_text() content = bs.find('div', {'id':'mw-content-text'}).find('p').get_text() store(title, content) return bs.find('div', {'id':'bodyContent'}).findAll('a',href=re.compile('^(/wiki/)((?!:).)*$')) links = getLinks('/wiki/Kevin_Bacon') try: while len(links) > 0: newArticle = links[random.randint(0, len(links)-1)].attrs['href'] print(newArticle) links = getLinks(newArticle)
Наконец, нам нужно закрыть как курсор, так и соединение.
finally: cur.close() conn.close()
Это сохранит собранные данные из Википедии в таблицу с именем scrap_pages. Если вы знакомы с MySQL и веб-очисткой, то приведенный выше код не будет сложным для понимания.
Обработка данных с использованием PostgreSQL
PostgreSQL, разработанный всемирной командой добровольцев, представляет собой систему управления реляционными базами данных с открытым исходным кодом (RDMS). Процесс обработки очищенных данных с использованием PostgreSQL аналогичен процессу MySQL. Будет два изменения: во-первых, команды будут отличаться от MySQL, а во-вторых, здесь мы будем использовать библиотеку Python psycopg2 для ее интеграции с Python.
Если вы не знакомы с PostgreSQL, вы можете узнать его по адресу https://www.tutorialspoint.com/postgresql/. И с помощью следующей команды мы можем установить библиотеку Python psycopg2 —