Chuyển đến nội dung chính

Cách dùng Python để thu thập dữ liệu từ Amazon

Tìm hiểu về web scraping với Python và cách cào dữ liệu từ Amazon bằng thư viện Beautiful Soup.
Đã cập nhật 5 thg 10, 2026  · 13 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity
đồ họa web scraping Amazon
Nguồn

Trong thời đại internet ngập tràn dữ liệu và dữ liệu được ví như “dầu mỏ mới”, web scraping càng trở nên quan trọng và hữu ích trong nhiều ứng dụng. Web scraping là việc trích xuất hay “cào” thông tin từ các trang web. Đôi khi nó cũng được gọi là thu hoạch dữ liệu web hay trích xuất dữ liệu web. Sao chép văn bản từ một trang web và dán về máy của bạn cũng là web scraping, nhưng đó là thao tác thủ công. Nhìn chung, web scraping đề cập đến việc tự động trích xuất dữ liệu nhờ các web crawler. Web crawler là các script kết nối với World Wide Web thông qua giao thức HTTP và cho phép bạn tự động lấy dữ liệu.

Dù bạn là nhà khoa học dữ liệu, kỹ sư, hay bất kỳ ai phân tích lượng dữ liệu lớn, thì khả năng thu thập dữ liệu từ web là một kỹ năng hữu ích. Giả sử bạn tìm thấy dữ liệu trên web nhưng không có cách tải xuống trực tiếp, kỹ năng web scraping bằng Python sẽ giúp bạn trích xuất dữ liệu thành dạng hữu ích để nhập và sử dụng theo nhiều cách khác nhau.

Một số ứng dụng thực tế của web scraping có thể là:

  • Thu thập hồ sơ ứng viên có kỹ năng cụ thể,
  • Trích xuất tweet trên Twitter với các hashtag nhất định,
  • Tạo danh sách khách hàng tiềm năng trong marketing,
  • Cào chi tiết sản phẩm và đánh giá từ các website thương mại điện tử như Amazon, trọng tâm của hướng dẫn này

Ngoài các trường hợp trên, web scraping còn được dùng rộng rãi trong xử lý ngôn ngữ tự nhiên để trích xuất văn bản từ trang web phục vụ huấn luyện mô hình học sâu.

Trước khi tiếp tục, lưu ý rằng các trang như Amazon có thể cập nhật điều khoản dịch vụ hoặc áp dụng các hạn chế kỹ thuật mới ảnh hưởng đến cách nội dung của họ được truy cập hay tái sử dụng. Bạn có trách nhiệm xem lại Điều khoản Dịch vụ và tệp robots.txt của trang để đảm bảo trường hợp sử dụng của bạn tuân thủ. Chính sách có thể thay đổi và quyền hạn có thể khác nhau.

Những thách thức tiềm ẩn của Web Scraping

  • Một thách thức khi cào thông tin từ các trang web là cấu trúc trang rất đa dạng. Nghĩa là mẫu (template) của mỗi trang thường khác nhau và độc nhất; do đó việc khái quát hóa trên nhiều trang có thể là thách thức.

  • Một thách thức khác là tính bền vững. Vì các nhà phát triển liên tục cập nhật website, bạn khó có thể dựa vào một scraper trong thời gian dài. Dù thay đổi có thể nhỏ, chúng vẫn có thể gây trở ngại khi bạn lấy dữ liệu.

Vì vậy, để giải quyết các thách thức trên, có một số hướng khả thi. Một là áp dụng quy trình tích hợp liên tục & phát triển (CI/CD) và bảo trì thường xuyên vì thay đổi trên website là động.

Một cách tiếp cận thực tế hơn là sử dụng các Giao diện Lập trình Ứng dụng (API) do nhiều trang & nền tảng cung cấp. Ví dụ, Facebook và Twitter cung cấp API dành riêng cho nhà phát triển muốn thử nghiệm với dữ liệu của họ hoặc trích xuất thông tin, chẳng hạn dữ liệu về tất cả bạn bè & bạn chung để vẽ đồ thị kết nối. Định dạng dữ liệu khi dùng API khác với web scraping thông thường, cụ thể là JSON hoặc XML, trong khi với web scraping tiêu chuẩn, bạn chủ yếu xử lý dữ liệu ở dạng HTML.

Beautiful Soup là gì?

Beautiful Soup là thư viện Python thuần dùng để trích xuất dữ liệu có cấu trúc từ website. Nó cho phép bạn phân tích dữ liệu từ tệp HTML và XML. Thư viện này hoạt động như một mô-đun hỗ trợ và tương tác với HTML theo cách tương tự nhưng thuận tiện hơn so với việc bạn dùng các công cụ dành cho nhà phát triển khác để tương tác với trang web.

  • Thường giúp lập trình viên tiết kiệm hàng giờ hoặc vài ngày công vì nó hoạt động với các trình phân tích cú pháp ưa thích như lxml và html5lib, cung cấp cách điều hướng, tìm kiếm và chỉnh sửa cây phân tích theo phong cách Python tự nhiên.

  • Một tính năng mạnh và hữu ích khác của Beautiful Soup là khả năng tự động chuyển đổi tài liệu lấy về sang Unicode và tài liệu xuất ra sang UTF-8. Là nhà phát triển, bạn không cần lo việc này trừ khi bản thân tài liệu không chỉ định mã hóa hoặc Beautiful Soup không thể phát hiện.

  • Nó cũng được xem là nhanh hơn so với nhiều kỹ thuật phân tích hay cào dữ liệu thông thường khác.

Các loại trình phân tích cú pháp

bảng các loại parser
Nguồn

Thoải mái tìm hiểu thêm tại đây.

Lý thuyết vậy là đủ rồi nhỉ? Giờ hãy cài đặt Beautiful Soup và bắt đầu tìm hiểu các tính năng, khả năng của nó bằng Python.

Bước đầu tiên, bạn cần cài đặt thư viện Beautiful Soup bằng terminal hoặc jupyter lab. Cách tốt nhất là cài qua pip, nên hãy đảm bảo bạn đã cài sẵn mô-đun pip.

!pip3 install beautifulsoup4
Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.7/site-packages (4.7.1)
Requirement already satisfied: soupsieve>=1.2 in /usr/local/lib/python3.7/site-packages (from beautifulsoup4) (1.9.5)

Import các thư viện cần thiết

Hãy import các gói cần dùng để cào dữ liệu từ website và trực quan hóa bằng seaborn, matplotlib và bokeh.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
import re
import time
from datetime import datetime
import matplotlib.dates as mdates
import matplotlib.ticker as ticker
from urllib.request import urlopen
from bs4 import BeautifulSoup
import requests

Cào dữ liệu sách bán chạy nhất trên Amazon

URL bạn sẽ cào là: https://www.amazon.in/gp/bestsellers/books/. Tham số trang có thể được chỉnh để truy cập dữ liệu của từng trang. Vì vậy, để lấy hết dữ liệu, bạn cần lặp qua toàn bộ các trang, nhưng trước hết, bạn cần xác định số trang từ website.

Để kết nối tới URL và lấy nội dung HTML, cần những bước sau:

  • Định nghĩa hàm get_data nhận số trang làm đối số,
  • Định nghĩa user-agent giúp vượt qua việc bị phát hiện là scraper,
  • Chỉ định URL cho requests.get và truyền header user-agent làm đối số,
  • Trích nội dung từ requests.get,
  • Cào trang chỉ định và gán vào biến soup,

Bước tiếp theo và quan trọng là xác định thẻ cha (parent tag) nơi chứa toàn bộ dữ liệu bạn cần. Dữ liệu bạn sẽ trích xuất gồm có:

  • Tên sách
  • Tác giả
  • Đánh giá
  • Số khách hàng đã đánh giá
  • Giá

Hình dưới đây cho thấy vị trí của thẻ cha, khi bạn di chuột lên, mọi phần tử cần thiết sẽ được tô sáng.

cào trang sách bán chạy Amazon

Tương tự thẻ cha, bạn cần tìm thuộc tính cho tên sách, tác giả, đánh giá, số khách hàng đánh giá và giá. Bạn sẽ vào trang muốn cào, chọn thuộc tính, nhấp chuột phải và chọn inspect element. Việc này giúp bạn xác định chính xác các trường thông tin cần trích xuất từ trang HTML thô, như minh họa bên dưới:

ảnh chụp màn hình inspect trang amazon

Lưu ý một số tên tác giả không được đăng ký với Amazon, nên bạn cần áp dụng thêm find cho các tác giả đó. Trong ô mã dưới đây, bạn sẽ thấy các điều kiện if-else lồng nhau cho tên tác giả, nhằm trích xuất tên tác giả/nhà xuất bản.

no_pages = 2

def get_data(pageNo):  
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0", "Accept-Encoding":"gzip, deflate", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "DNT":"1","Connection":"close", "Upgrade-Insecure-Requests":"1"}

    r = requests.get('https://www.amazon.in/gp/bestsellers/books/ref=zg_bs_pg_'+str(pageNo)+'?ie=UTF8&pg='+str(pageNo), headers=headers)#, proxies=proxies)
    content = r.content
    soup = BeautifulSoup(content)
    #print(soup)

    alls = []
    for d in soup.findAll('div', attrs={'class':'a-section a-spacing-none aok-relative'}):
        #print(d)
        name = d.find('span', attrs={'class':'zg-text-center-align'})
        n = name.find_all('img', alt=True)
        #print(n[0]['alt'])
        author = d.find('a', attrs={'class':'a-size-small a-link-child'})
        rating = d.find('span', attrs={'class':'a-icon-alt'})
        users_rated = d.find('a', attrs={'class':'a-size-small a-link-normal'})
        price = d.find('span', attrs={'class':'p13n-sc-price'})

        all1=[]

        if name is not None:
            #print(n[0]['alt'])
            all1.append(n[0]['alt'])
        else:
            all1.append("unknown-product")

        if author is not None:
            #print(author.text)
            all1.append(author.text)
        elif author is None:
            author = d.find('span', attrs={'class':'a-size-small a-color-base'})
            if author is not None:
                all1.append(author.text)
            else:    
                all1.append('0')

        if rating is not None:
            #print(rating.text)
            all1.append(rating.text)
        else:
            all1.append('-1')

        if users_rated is not None:
            #print(price.text)
            all1.append(users_rated.text)
        else:
            all1.append('0')     

        if price is not None:
            #print(price.text)
            all1.append(price.text)
        else:
            all1.append('0')
        alls.append(all1)    
    return alls

Ô mã dưới đây sẽ thực hiện các chức năng sau:

  • Gọi hàm get_data bên trong một vòng lặp for,
  • Vòng lặp for sẽ lặp từ 1 đến số trang+1.
  • Vì đầu ra là danh sách lồng nhau, trước tiên bạn sẽ làm phẳng danh sách rồi truyền vào DataFrame.
  • Cuối cùng, lưu dataframe thành tệp CSV.
results = []
for i in range(1, no_pages+1):
    results.append(get_data(i))
flatten = lambda l: [item for sublist in l for item in sublist]
df = pd.DataFrame(flatten(results),columns=['Book Name','Author','Rating','Customers_Rated', 'Price'])
df.to_csv('amazon_products.csv', index=False, encoding='utf-8')

Đọc tệp CSV

Giờ hãy tải tệp CSV bạn đã tạo và lưu ở ô trên. Đây là bước tùy chọn; bạn có thể dùng trực tiếp dataframe df và bỏ qua bước dưới.

df = pd.read_csv("amazon_products.csv")
df.shape
(100, 5)

Kích thước của dataframe cho thấy có 100 hàng và 5 cột trong tệp CSV của bạn.

Hãy in 5 hàng đầu tiên của tập dữ liệu.

df.head(61)
  Book Name Author Rating Customers_Rated Price
0 The Power of your Subconscious Mind Joseph Murphy 4.5 out of 5 stars 13,948 ₹ 99.00
1 Think and Grow Rich Napoleon Hill 4.5 out of 5 stars 16,670 ₹ 99.00
2 Word Power Made Easy Norman Lewis 4.4 out of 5 stars 10,708 ₹ 130.00
3 Mathematics for Class 12 (Set of 2 Vol.) Exami... R.D. Sharma 4.5 out of 5 stars 18 ₹ 930.00
4 The Girl in Room 105 Chetan Bhagat 4.3 out of 5 stars 5,162 ₹ 149.00
... ... ... ... ... ...
56 COMBO PACK OF Guide To JAIIB Legal Aspects Pri... MEC MILLAN 4.5 out of 5 stars 114 ₹ 1,400.00
57 Wren & Martin High School English Grammar and ... Rao N 4.4 out of 5 stars 1,613 ₹ 400.00
58 Objective General Knowledge Sanjiv Kumar 4.2 out of 5 stars 742 ₹ 254.00
59 The Rudest Book Ever Shwetabh Gangwar 4.6 out of 5 stars 1,177 ₹ 194.00
60 Sita: Warrior of Mithila (Ram Chandra Series -... Amish Tripathi 4.4 out of 5 stars 3,110 ₹ 248.00

61 hàng × 5 cột

Hãy tiền xử lý các cột Ratings, Customers_Rated và Price.

  • Vì điểm đánh giá theo thang 5, bạn chỉ giữ lại số điểm và bỏ phần thừa.
  • Ở cột customers_rated, bỏ dấu phẩy.
  • Ở cột price, bỏ ký hiệu rupee, dấu phẩy và tách theo dấu chấm.
  • Cuối cùng, chuyển cả ba cột sang kiểu số nguyên hoặc số thực.
df['Rating'] = df['Rating'].apply(lambda x: x.split()[0])
df['Rating'] = pd.to_numeric(df['Rating'])
df["Price"] = df["Price"].str.replace('₹', '')
df["Price"] = df["Price"].str.replace(',', '')
df['Price'] = df['Price'].apply(lambda x: x.split('.')[0])
df['Price'] = df['Price'].astype(int)
df["Customers_Rated"] = df["Customers_Rated"].str.replace(',', '')
df['Customers_Rated'] = pd.to_numeric(df['Customers_Rated'], errors='ignore')
df.head()
  Book Name Author Rating Customers_Rated Price
0 The Power of your Subconscious Mind Joseph Murphy 4.5 13948 99
1 Think and Grow Rich Napoleon Hill 4.5 16670 99
2 Word Power Made Easy Norman Lewis 4.4 10708 130
3 Mathematics for Class 12 (Set of 2 Vol.) Exami... R.D. Sharma 4.5 18 930
4 The Girl in Room 105 Chetan Bhagat 4.3 5162 149

Hãy kiểm tra kiểu dữ liệu của DataFrame.

df.dtypes
Book Name           object
Author              object
Rating             float64
Customers_Rated      int64
Price                int64
dtype: object

Thay thế các giá trị 0 trong DataFrame thành NaN.

df.replace(str(0), np.nan, inplace=True)
df.replace(0, np.nan, inplace=True)

Đếm số lượng NaN trong DataFrame

count_nan = len(df) - df.count()
count_nan
Book Name          0
Author             6
Rating             0
Customers_Rated    0
Price              1
dtype: int64

Từ kết quả trên, bạn có thể thấy có tổng cộng sáu cuốn sách không có tên tác giả, trong khi một cuốn không có giá đi kèm. Đây là những thông tin quan trọng đối với tác giả muốn bán sách của mình và không nên bỏ qua.

Hãy loại các giá trị NaN này.

df = df.dropna()

Sách có giá cao nhất của các tác giả trên Amazon

Hãy tìm xem tác giả nào có sách giá cao nhất. Bạn sẽ trực quan hóa kết quả cho 20 tác giả hàng đầu.

data = df.sort_values(["Price"], axis=0, ascending=False)[:15]
data
  Book Name Author Rating Customers_Rated Price
56 COMBO PACK OF Guide To JAIIB Legal Aspects Pri... MEC MILLAN 4.5 114 1400.0
98 Diseases of Ear, Nose and Throat P L Dhingra 4.7 118 1285.0
3 Mathematics for Class 12 (Set of 2 Vol.) Exami... R.D. Sharma 4.5 18 930.0
96 Madhymik Bhautik Vigyan -12 (Part 1-2) (NCERT ... Kumar-Mittal 5.0 1 765.0
6 My First Library: Boxset of 10 Board Books for... Wonder House Books 4.5 3116 750.0
38 Indian Polity - For Civil Services and Other S... M. Laxmikanth 4.6 1210 700.0
42 A Modern Approach to Verbal & Non-Verbal Reaso... R.S. Aggarwal 4.4 1822 675.0
27 The Intelligent Investor (English) Paperback –... Benjamin Graham 4.4 6201 650.0
99 Law of CONTRACT & Specific Relief Dr. Avtar Singh 4.4 23 643.0
49 All In One ENGLISH CORE CBSE Class 12 2019-20 Arihant Experts 4.4 493 599.0
72 The Secret Rhonda Byrne 4.5 11220 556.0
86 How to Prepare for Quantitative Aptitude for t... Arun Sharma 4.4 847 537.0
8 Quantitative Aptitude for Competitive Examinat... R S Aggarwal 4.4 4553 435.0
16 Sapiens: A Brief History of Humankind Yuval Noah Harari 4.6 14985 434.0
84 Concept of Physics Part-2 (2019-2020 Session) ... H.C. Verma 4.6 1807 433.0
from bokeh.models import ColumnDataSource
from bokeh.transform import dodge
import math
from bokeh.io import curdoc
curdoc().clear()
from bokeh.io import push_notebook, show, output_notebook
from bokeh.layouts import row
from bokeh.plotting import figure
from bokeh.transform import factor_cmap
from bokeh.models import Legend
output_notebook()
Đang tải BokehJS ...
p = figure(x_range=data.iloc[:,1], plot_width=800, plot_height=550, title="Authors Highest Priced Book", toolbar_location=None, tools="")

p.vbar(x=data.iloc[:,1], top=data.iloc[:,4], width=0.9)

p.xgrid.grid_line_color = None
p.y_range.start = 0
p.xaxis.major_label_orientation = math.pi/2
show(p)
biểu đồ cột sách giá cao nhất theo tác giả

Từ biểu đồ trên, bạn có thể thấy hai cuốn sách có giá cao nhất thuộc về các tác giả Mecmillan và P L Dhingra.

Sách được đánh giá cao nhất theo tác giả

Hãy tìm xem những tác giả nào có sách được đánh giá cao nhất và đó là những cuốn nào. Tuy nhiên, khi thực hiện, bạn sẽ lọc ra các tác giả có dưới 1000 lượt khách hàng đánh giá.

data = df[df['Customers_Rated'] > 1000]
data = data.sort_values(['Rating'],axis=0, ascending=False)[:15]
data
  Book Name Author Rating Customers_Rated Price
26 Inner Engineering: A Yogi’s Guide to Joy Sadhguru 4.7 4091 254.0
70 Bhagavad-Gita (Hindi) A. C. Bhaktivedanta 4.7 1023 150.0
11 The Alchemist Paulo Coelho 4.7 22182 264.0
47 Harry Potter and the Philosopher's Stone J.K. Rowling 4.7 7737 234.0
84 Concept of Physics Part-2 (2019-2020 Session) ... H.C. Verma 4.6 1807 433.0
16 Sapiens: A Brief History of Humankind Yuval Noah Harari 4.6 14985 434.0
38 Indian Polity - For Civil Services and Other S... M. Laxmikanth 4.6 1210 700.0
29 Wings of Fire: An Autobiography of Abdul Kalam Arun Tiwari 4.6 3513 301.0
39 The Theory of Everything Stephen Hawking 4.6 2004 199.0
25 The Immortals of Meluha (Shiva Trilogy) Amish 4.6 4538 248.0
23 Life's Amazing Secrets: How to Find Balance an... Gaur Gopal Das 4.6 3422 213.0
34 Dear Stranger, I Know How You Feel Ashish Bagrecha 4.6 1130 167.0
17 The Monk Who Sold His Ferrari Robin Sharma 4.6 5877 137.0
13 How to Win Friends and Influence People Dale Carnegie 4.6 15377 99.0
59 The Rudest Book Ever Shwetabh Gangwar 4.6 1177 194.0
p = figure(x_range=data.iloc[:,0], plot_width=800, plot_height=600, title="Top Rated Books with more than 1000 Customers Rating", toolbar_location=None, tools="")

p.vbar(x=data.iloc[:,0], top=data.iloc[:,2], width=0.9)

p.xgrid.grid_line_color = None
p.y_range.start = 0
p.xaxis.major_label_orientation = math.pi/2
show(p)
biểu đồ cột sách được đánh giá cao nhất

Từ kết quả trên, bạn có thể thấy ba cuốn sách được đánh giá cao nhất với hơn 1000 lượt đánh giá là Inner Engineering: A Yogi’s Guide to Joy, Bhagavad-Gita (Hindi) và The Alchemist.

p = figure(x_range=data.iloc[:,1], plot_width=800, plot_height=600, title="Top Rated Books with more than 1000 Customers Rating", toolbar_location=None, tools="")

p.vbar(x=data.iloc[:,1], top=data.iloc[:,2], width=0.9)

p.xgrid.grid_line_color = None
p.y_range.start = 0
p.xaxis.major_label_orientation = math.pi/2
show(p)
biểu đồ cột tác giả có sách được đánh giá cao nhất 2

Biểu đồ trên hiển thị 10 tác giả hàng đầu theo thứ tự giảm dần có sách được đánh giá cao nhất với hơn 1000 lượt đánh giá, gồm Sadhguru, A. C. Bhaktivedanta và Paulo Coelho.

Tác giả và sách có nhiều lượt đánh giá nhất

Dù bạn đã xem các sách và tác giả được đánh giá cao nhất, vẫn sẽ thuyết phục và đáng tin cậy hơn nếu kết luận tác giả và cuốn sách tốt nhất dựa trên số lượng khách hàng đã đánh giá.

Vậy hãy nhanh chóng tìm điều đó.

data = df.sort_values(["Customers_Rated"], axis=0, ascending=False)[:20]
data
  Book Name Author Rating Customers_Rated Price
11 The Alchemist Paulo Coelho 4.7 22182 264.0
1 Think and Grow Rich Napoleon Hill 4.5 16670 99.0
13 How to Win Friends and Influence People Dale Carnegie 4.6 15377 99.0
16 Sapiens: A Brief History of Humankind Yuval Noah Harari 4.6 14985 434.0
18 Rich Dad Poor Dad : What The Rich Teach Their ... Robert T. Kiyosaki 4.5 14591 296.0
10 The Subtle Art of Not Giving a F*ck Mark Manson 4.4 14418 365.0
0 The Power of your Subconscious Mind Joseph Murphy 4.5 13948 99.0
48 The Power of Your Subconscious Mind Joseph Murphy 4.5 13948 99.0
72 The Secret Rhonda Byrne 4.5 11220 556.0
41 1984 George Orwell 4.5 10829 95.0
2 Word Power Made Easy Norman Lewis 4.4 10708 130.0
46 Man's Search For Meaning: The classic tribute ... Viktor E Frankl 4.4 8544 245.0
67 The 7 Habits of Highly Effective People R. Stephen Covey 4.3 8229 397.0
47 Harry Potter and the Philosopher's Stone J.K. Rowling 4.7 7737 234.0
40 One Indian Girl Chetan Bhagat 3.8 7128 113.0
65 Thinking, Fast and Slow (Penguin Press Non-Fic... Daniel Kahneman 4.4 7087 410.0
27 The Intelligent Investor (English) Paperback –... Benjamin Graham 4.4 6201 650.0
17 The Monk Who Sold His Ferrari Robin Sharma 4.6 5877 137.0
53 Ram - Scion of Ikshvaku (Ram Chandra) Amish Tripathi 4.2 5766 262.0
93 The Richest Man in Babylon George S. Clason 4.5 5694 129.0
from bokeh.transform import factor_cmap
from bokeh.models import Legend
from bokeh.palettes import Dark2_5 as palette
import itertools
from bokeh.palettes import d3
#colors has a list of colors which can be used in plots
colors = itertools.cycle(palette)

palette = d3['Category20'][20]
index_cmap = factor_cmap('Author', palette=palette,
                         factors=data["Author"])
p = figure(plot_width=700, plot_height=700, title = "Top Authors: Rating vs. Customers Rated")
p.scatter('Rating','Customers_Rated',source=data,fill_alpha=0.6, fill_color=index_cmap,size=20,legend='Author')
p.xaxis.axis_label = 'RATING'
p.yaxis.axis_label = 'CUSTOMERS RATED'
p.legend.location = 'top_left'
BokehDeprecationWarning: 'legend' keyword is deprecated, use explicit 'legend_label', 'legend_field', or 'legend_group' keywords instead
show(p)
biểu đồ scatter top tác giả

Biểu đồ trên là scatter plot giữa tác giả với số lượt khách hàng đánh giá và điểm đánh giá thực tế. Có thể rút ra các kết luận sau:

  • Không nghi ngờ gì, cuốn The Alchemist của Paulo Coelho là sách bán chạy nhất vì điểm đánh giá và số lượt khách hàng đánh giá đều rất đồng nhất.
  • Sách Ram - Scion of Ikshvaku (Ram Chandra) của tác giả Amish Tripathi có điểm 4.2 với 5766 lượt đánh giá. Tuy nhiên, cuốn The Richest Man in Babylon của George S. Clason có số lượt đánh giá gần như tương đương, nhưng điểm tổng thể là 4.5. Do đó, có thể kết luận nhiều khách hàng chấm điểm cao cho The Richest Man in Babylon hơn.

Kết luận

Chúc mừng bạn đã hoàn thành hướng dẫn.

Hướng dẫn này giới thiệu cơ bản về cách cào dữ liệu Amazon với Beautiful Soup và cách bạn có thể khai thác ý nghĩa từ thông tin trích xuất bằng cách trực quan hóa với thư viện vẽ Bokeh. Bài tập tốt để tiến thêm một bước trong học web scraping với Beautiful Soup là cào dữ liệu từ các trang khác và xem bạn có thể rút ra insight gì. Chúng tôi cũng có hướng dẫn về cào dữ liệu Reddit nếu bạn muốn thêm gợi ý khi cào các trang phổ biến.

Nếu bạn mới bắt đầu với Python và muốn học thêm, hãy tham gia khóa Giới thiệu Khoa học Dữ liệu với Python của DataCamp.

Chủ đề
Python

Tìm hiểu thêm về Python

Khóa học

Nhập môn Khoa học Dữ liệu với Python

4 giờ
504.2K
Khám phá Khoa học dữ liệu bằng Python và học cách phân tích, trực quan hóa dữ liệu hiệu quả. Không cần kinh nghiệm hay kỹ năng lập trình.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm