CoderCastrov logo
CoderCastrov
Парсер

Парсинг данных с веб-страницы с помощью Python (Часть 2)

Парсинг данных с веб-страницы с помощью Python (Часть 2)
просмотров
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). Спасибо.