Python Web Scraping - Pemrosesan Data
Pada bab sebelumnya, kita belajar tentang mengekstrak data dari halaman web atau web scraping dengan berbagai modul Python. Dalam bab ini, mari kita lihat berbagai teknik untuk memproses data yang telah dikikis.
pengantar
Untuk memproses data yang telah di-scraping, kita harus menyimpan data di mesin lokal kita dalam format tertentu seperti spreadsheet (CSV), JSON atau terkadang dalam database seperti MySQL.
Pemrosesan Data CSV dan JSON
Pertama, kita akan menulis informasi, setelah mengambil dari halaman web, ke dalam file CSV atau spreadsheet. Mari kita pahami terlebih dahulu melalui contoh sederhana di mana pertama-tama kita akan mengambil informasi menggunakanBeautifulSoup modul, seperti yang dilakukan sebelumnya, dan kemudian dengan menggunakan modul Python CSV kita akan menulis informasi tekstual tersebut ke dalam file CSV.
Pertama, kita perlu mengimpor pustaka Python yang diperlukan sebagai berikut -
import requests
from bs4 import BeautifulSoup
import csv
Di baris kode berikut ini, kami menggunakan permintaan untuk membuat permintaan HTTP GET untuk url: https://authoraditiagarwal.com/ dengan membuat permintaan GET.
r = requests.get('https://authoraditiagarwal.com/')
Sekarang, kita perlu membuat objek Soup sebagai berikut -
soup = BeautifulSoup(r.text, 'lxml')
Sekarang, dengan bantuan baris kode berikutnya, kita akan menulis data yang diambil ke dalam file CSV bernama dataprocessing.csv.
f = csv.writer(open(' dataprocessing.csv ','w'))
f.writerow(['Title'])
f.writerow([soup.title.text])
Setelah menjalankan skrip ini, informasi tekstual atau judul halaman web akan disimpan dalam file CSV yang disebutkan di atas di komputer lokal Anda.
Demikian pula, kami dapat menyimpan informasi yang dikumpulkan dalam file JSON. Berikut ini adalah skrip Python yang mudah dipahami untuk melakukan hal yang sama di mana kami mengambil informasi yang sama seperti yang kami lakukan di skrip Python terakhir, tetapi kali ini informasi yang diambil disimpan di JSONfile.txt dengan menggunakan modul 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)
Setelah menjalankan skrip ini, informasi yang diambil yaitu judul halaman web akan disimpan dalam file teks yang disebutkan di atas pada mesin lokal Anda.
Pemrosesan Data menggunakan AWS S3
Terkadang kami mungkin ingin menyimpan data bekas di penyimpanan lokal kami untuk tujuan arsip. Tetapi bagaimana jika kita perlu menyimpan dan menganalisis data ini dalam skala besar? Jawabannya adalah layanan penyimpanan cloud bernama Amazon S3 atau AWS S3 (Simple Storage Service). Pada dasarnya AWS S3 adalah penyimpanan objek yang dibuat untuk menyimpan dan mengambil sejumlah data dari mana saja.
Kami dapat mengikuti langkah-langkah berikut untuk menyimpan data di AWS S3 -
Step 1- Pertama, kami memerlukan akun AWS yang akan memberi kami kunci rahasia untuk digunakan dalam skrip Python kami saat menyimpan data. Ini akan membuat bucket S3 di mana kita dapat menyimpan data kita.
Step 2 - Selanjutnya, kita perlu menginstal boto3Library Python untuk mengakses bucket S3. Itu dapat diinstal dengan bantuan perintah berikut -
pip install boto3
Step 3 - Selanjutnya, kita dapat menggunakan skrip Python berikut untuk mengambil data dari halaman web dan menyimpannya ke bucket AWS S3.
Pertama, kita perlu mengimpor pustaka Python untuk scraping, di sini kita sedang mengerjakan requests, dan boto3 menyimpan data ke bucket S3.
import requests
import boto3
Sekarang kita dapat mengikis data dari URL kita.
data = requests.get("Enter the URL").text
Sekarang untuk menyimpan data ke S3 bucket, kita perlu membuat klien S3 sebagai berikut -
s3 = boto3.client('s3')
bucket_name = "our-content"
Baris kode berikutnya akan membuat S3 bucket sebagai berikut -
s3.create_bucket(Bucket = bucket_name, ACL = 'public-read')
s3.put_object(Bucket = bucket_name, Key = '', Body = data, ACL = "public-read")
Sekarang Anda dapat memeriksa bucket dengan name our-content dari akun AWS Anda.
Pengolahan data menggunakan MySQL
Mari kita pelajari cara memproses data menggunakan MySQL. Jika Anda ingin mempelajari tentang MySQL, Anda dapat mengikuti tautannyahttps://www.tutorialspoint.com/mysql/.
Dengan bantuan langkah-langkah berikut, kita dapat mengikis dan memproses data ke dalam tabel MySQL -
Step 1- Pertama, dengan menggunakan MySQL kita perlu membuat database dan tabel tempat kita ingin menyimpan data bekas kita. Misalnya, kami membuat tabel dengan kueri berikut -
CREATE TABLE Scrap_pages (id BIGINT(7) NOT NULL AUTO_INCREMENT,
title VARCHAR(200), content VARCHAR(10000),PRIMARY KEY(id));
Step 2- Selanjutnya, kita perlu berurusan dengan Unicode. Perhatikan bahwa MySQL tidak menangani Unicode secara default. Kita perlu mengaktifkan fitur ini dengan bantuan perintah berikut yang akan mengubah kumpulan karakter default untuk database, untuk tabel dan untuk kedua kolom -
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;
Step 3- Sekarang, integrasikan MySQL dengan Python. Untuk ini, kita membutuhkan PyMySQL yang dapat diinstal dengan bantuan perintah berikut
pip install PyMySQL
Step 4- Sekarang database kita bernama Scrap, yang dibuat sebelumnya, siap untuk menyimpan data, setelah di-scrap dari web, ke dalam tabel bernama Scrap_pages. Di sini, di contoh kita, kita akan mengikis data dari Wikipedia dan itu akan disimpan ke dalam database kita.
Pertama, kita perlu mengimpor modul Python yang diperlukan.
from urllib.request import urlopen
from bs4 import BeautifulSoup
import datetime
import random
import pymysql
import re
Sekarang, buat koneksi, yang mengintegrasikan ini dengan 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()
Sekarang, hubungkan dengan Wikipedia dan dapatkan data darinya.
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)
Terakhir, kita perlu menutup kursor dan koneksi.
finally:
cur.close()
conn.close()
Ini akan menyimpan data yang dikumpulkan dari Wikipedia ke dalam tabel bernama scrap_pages. Jika Anda sudah familiar dengan MySQL dan web scraping, maka kode di atas tidak akan sulit untuk dipahami.
Pengolahan data menggunakan PostgreSQL
PostgreSQL, yang dikembangkan oleh tim relawan di seluruh dunia, adalah sistem Manajemen basis data relasional (RDMS) open source. Proses pengolahan data bekas menggunakan PostgreSQL mirip dengan MySQL. Akan ada dua perubahan: Pertama, perintah akan berbeda dengan MySQL dan kedua, di sini kita akan gunakanpsycopg2 Library Python untuk melakukan integrasinya dengan Python.
Jika Anda tidak terbiasa dengan PostgreSQL maka Anda dapat mempelajarinya di https://www.tutorialspoint.com/postgresql/. Dan dengan bantuan perintah berikut kita dapat menginstal pustaka psycopg2 Python -
pip install psycopg2