Парсинг данных с веб-страницы с помощью Python (Часть 2)
Table Of Content
Здесь я продолжу парсить данные с веб-страницы с помощью Python. В этой второй части я буду сохранять полученные данные в файл CSV с использованием библиотеки pandas и отображать результаты анализа данных в виде графиков, таких как столбчатые диаграммы, круговые диаграммы, линейные графики и т.д. с помощью библиотеки matplotlib.
Далее создайте новый файл с именем tocsv.py и введите следующий код:
import requests
from bs4 import BeautifulSoup
import pandas as pd
array_addr = []
def addr_url(addr):
addr = {}
addr["addr_gambar"] = i.find("img")
addr["addr_harga"] = i.find("p",class_="price_color").text
addr["addr_judul"] = i.find("h3").text
addr["addr_rate"] = i.find("p", class_="star-rating")
array_addr.append(addr)
return array_addr
def rubah_rate(rate):
if rate == "One":
jml_rate = "1"
elif rate == "Two":
jml_rate = "2"
elif rate == "Three":
jml_rate = "3"
elif rate == "Four":
jml_rate = "4"
elif rate == "Five":
jml_rate = "5"
return jml_rate
try:
data = []
for page in range(1, 2):
html = requests.get('https://books.toscrape.com/catalogue/page-'+str(page)+'.html')
html_soup = BeautifulSoup(html.content, "html.parser")
all_author = html_soup.find_all("li", class_="col-xs-6 col-sm-4 col-md-3 col-lg-3")
for i in all_author:
addr_url(i)
for x in array_addr:
gambar = x["addr_gambar"]['src']
judul = x["addr_judul"]
harga = x["addr_harga"].replace("£","")
rating = rubah_rate(x["addr_rate"]["class"][1])
data.append({
'gambar' :gambar,
'judul' : judul,
'adr_harga' :harga,
"rating" : rating
})
df = pd.DataFrame (data)
df.to_csv('data_book.csv', encoding='utf-8')
print('Selesai Menyimpan data csv.....')
except Exception as err:
print(f"Terjadi kesalahan: {err}")
После ввода этого кода запустите файл tocsv.py для сохранения полученных данных в файл на вашем компьютере.
После того, как данные сохранены на устройстве, создайте новый файл с именем grafik.py, так как полученные данные можно представить в виде графиков, и введите следующий код:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data_quote.csv')
plt.rcParams["figure.autolayout"] = True
fig, ax = plt.subplots()
df['author'].value_counts().sort_values(ascending=True).tail(10).plot(ax = ax, kind="bar")
plt.title("Rekap Data")
plt.show()
После ввода этого кода запустите файл grafik.py для просмотра графика. Для просмотра графика авторов введите следующее:
df['author'].value_counts().sort_values(ascending=True).tail(10).plot(ax = ax, kind="bar")
Для просмотра графика названий введите следующее:
df['judul'].value_counts().sort_values(ascending=True).tail(10).plot(ax = ax, kind="bar")
Для просмотра графика цен введите следующее:
df['adr_harga'].value_counts().sort_values(ascending=True).tail(10).plot(ax = ax, kind="pie")
Для просмотра графика рейтинга введите следующее:
df['rating'].value_counts().sort_values(ascending=True).tail(10).plot(ax = ax, kind="line")
И вот исчерпывающее объяснение парсинга данных с веб-страницы с помощью Python (Часть 2). Спасибо.