Tin tức và phân tích của tất cả các thiết bị di động

Làm cách nào để cài đặt Beautiful Soup và sử dụng nó cho các dự án Web Scraping?

Trong thế giới dựa trên dữ liệu ngày nay, phương pháp thu thập dữ liệu thủ công truyền thống đã lỗi thời. Một chiếc máy tính có kết nối Internet trên mỗi bàn làm việc đã biến web trở thành nguồn dữ liệu khổng lồ. Do đó, một phương pháp thu thập dữ liệu hiện đại hiệu quả và tiết kiệm thời gian hơn là quét web. Và để quét web, Python có một công cụ tên là Beautiful Soup. Trong bài đăng này, tôi sẽ hướng dẫn bạn các bước cài đặt Beautiful Soup để bắt đầu quét web.

Trước khi cài đặt và bắt đầu với Beautiful Soup, hãy cùng tìm hiểu lý do tại sao bạn nên làm điều đó.

Súp đẹp là gì?

Giả sử bạn đang nghiên cứu “Tác động của COVID đối với sức khỏe con người” và tìm thấy một số trang web có dữ liệu liên quan. Nhưng điều gì sẽ xảy ra nếu họ không cung cấp tùy chọn tải xuống bằng một cú nhấp chuột để mượn dữ liệu của bạn? Súp đẹp phát huy tác dụng.

Beautiful Soup là một trong những chỉ mục thư viện Python để tìm nạp dữ liệu từ các trang đích. Sẽ thuận tiện hơn khi lấy dữ liệu từ các trang HTML hoặc XML.

Leonard Richardson đã giới thiệu ý tưởng Beautiful Soup để quét web vào năm 2004. Nhưng sự đóng góp của ông cho dự án vẫn tiếp tục cho đến ngày nay. Anh ấy tự hào cập nhật mọi phiên bản mới của Beautiful Soup trên tài khoản Twitter của mình.

Mặc dù Beautiful Soup để quét web được phát triển bằng Python 3.8hoạt động hoàn hảo với cả python 3cũng như Python 2.4.

Thông thường các trang web sử dụng tính năng bảo vệ bằng hình ảnh xác thực để lưu dữ liệu của họ từ các công cụ trí tuệ nhân tạo. Trong trường hợp này, một vài thay đổi đối với tiêu đề “tác nhân người dùng” trong Beautiful Soup hoặc việc sử dụng API trình giải mã xác thực có thể bắt chước một trình duyệt đáng tin cậy và đánh lừa công cụ phát hiện.

Tuy nhiên, nếu bạn không có thời gian để khám phá Beautiful Soup hoặc muốn làm cho việc thu thập dữ liệu trở nên hiệu quả và dễ dàng, bạn không nên bỏ lỡ API thu thập dữ liệu web này, nơi bạn có thể chỉ cần cung cấp URL và lấy dữ liệu trong tay.

Nếu bạn đã là nhà phát triển, việc sử dụng Beautiful Soup để thu thập dữ liệu sẽ không gây khó khăn do cú pháp đơn giản của nó trong việc điều hướng trang web và trích xuất dữ liệu mong muốn dựa trên phân tích giả định. Đồng thời, nó cũng thân thiện với người mới bắt đầu.

Mặc dù Beautiful Soup không dành cho việc cạo nâng cao nhưng việc cạo dữ liệu từ các tệp được viết bằng ngôn ngữ đánh dấu là tốt nhất.

Tài liệu minh bạch và chi tiết là một điểm khác mà Beautiful Soup giành được.

Hãy cùng tìm một cách dễ dàng để có được món súp đẹp mắt trong máy của bạn.

Làm cách nào để cài đặt Beautiful Soup để quét web?

Pip – một trình quản lý gói Python đơn giản được phát triển vào năm 2008, hiện là công cụ tiêu chuẩn trong số các nhà phát triển để cài đặt bất kỳ thư viện hoặc phần phụ thuộc Python nào.

Pip được cài đặt với các phiên bản Python mới nhất theo mặc định. Vì vậy, nếu bạn đã cài đặt bất kỳ phiên bản Python nào gần đây trên hệ thống của mình thì bạn có thể tiếp tục.

Mở dấu nhắc lệnh và gõ lệnh pip sau để cài đặt súp đẹp ngay lập tức.

pip install beautifulsoup4

Bạn sẽ thấy một cái gì đó tương tự như ảnh chụp màn hình bên dưới trên màn hình.

Đảm bảo trình cài đặt PIP của bạn được cập nhật lên phiên bản mới nhất để tránh các lỗi phổ biến.

Lệnh cập nhật trình cài đặt pip lên phiên bản mới nhất là:

pip install --upgrade pip

Chúng tôi đã bao phủ thành công một nửa địa hình trong bài đăng này.

Bây giờ bạn đã cài đặt súp đẹp mắt trên máy tính của mình, vậy chúng ta hãy xem cách sử dụng nó để quét web.

Làm thế nào để nhập và làm việc với súp quét web đẹp?

Nhập lệnh sau vào IDE python của bạn để nhập beautiful Soup vào tập lệnh python hiện tại của bạn.

from bs4 import BeautifulSoup

Bây giờ Beautiful Soup đã có trong tệp python của bạn để sử dụng cho việc cạo.

Hãy xem một ví dụ về mã để tìm hiểu cách trích xuất dữ liệu mong muốn bằng beautiful Soup.

Chúng ta có thể yêu cầu Beautiful Soup tìm kiếm các thẻ HTML cụ thể trên trang nguồn và lấy dữ liệu có trong các thẻ đó.

Đối với bài viết này, tôi sẽ sử dụng marketwatch.com, nơi cập nhật giá cổ phiếu của nhiều công ty khác nhau theo thời gian thực. Hãy lấy một số dữ liệu từ trang web này để khám phá thư viện Beautiful Soup.

Nhập gói “yêu cầu” sẽ cho phép chúng tôi nhận và phản hồi các yêu cầu HTTP và “urllib” để tải trang web từ URL của nó.

from urllib.request import urlopen
import requests

Lưu liên kết trang web vào một biến để dễ dàng truy cập sau này.

url="https://www.marketwatch.com/investing/stock/amzn"

Một cách khác là sử dụng phương thức “urlopen” từ thư viện “urllib” để lưu trữ trang HTML trong một biến. Chuyển URL tới hàm “urlopen” và lưu kết quả vào một biến.

page = urlopen(url)

Tạo một đối tượng Beautiful Soup và phân tích trang web mong muốn bằng “html.parser”.

soup_obj = BeautifulSoup(page, 'html.parser')

Bây giờ tất cả tập lệnh HTML của trang web mục tiêu được lưu trữ trong biến “soup_obj”.

Trước khi tiếp tục, chúng ta hãy xem mã nguồn của trang đích để tìm hiểu thêm về tập lệnh và thẻ HTML.

Nhấp chuột phải vào bất cứ nơi nào trên trang web bằng chuột. Sau đó, bạn sẽ tìm thấy tùy chọn kiểm tra như hình dưới đây.

Bấm vào kiểm tra để xem mã nguồn.

Trong mã nguồn trên, bạn có thể tìm thấy các thẻ, lớp và thông tin chi tiết hơn về từng thành phần hiển thị trong giao diện trang web.

Phương thức “tìm” trong beautiful Soup cho phép chúng ta tìm kiếm các thẻ HTML mong muốn và tìm nạp dữ liệu. Để làm điều này, chúng tôi đặt tên lớp và thẻ cho một phương thức trích xuất dữ liệu cụ thể.

Ví dụ “Amazon.com Inc.” hiển thị trên trang web có tên lớp: “company__name” được gắn thẻ là “h1”. Chúng ta có thể nhập thông tin này vào phương thức “find” để trích xuất đoạn mã HTML có liên quan thành một biến.

name = soup_obj.find('h1', attrs={'class': 'company__name'})

Hãy in ra tập lệnh HTML được lưu trong biến “tên” và văn bản được yêu cầu trên màn hình.

print(name)

print(name.text)

Bạn có thể chứng kiến ​​dữ liệu được trích xuất được in trên màn hình.

Trang web IMDb quét web

Nhiều người trong chúng ta tìm kiếm xếp hạng phim trên trang web IMBb trước khi xem phim. Bản demo này sẽ cung cấp cho bạn danh sách các bộ phim được xếp hạng cao nhất và giúp bạn làm quen với món súp quét web đẹp mắt.

Bước chân 1: Nhập các thư viện Soup đẹp và yêu cầu.

from bs4 import BeautifulSoup
import requests

Bước chân 2: Hãy gán URL mà chúng ta muốn cạo cho một biến có tên là “url” để dễ dàng truy cập vào mã.

Gói “yêu cầu” được sử dụng để tìm nạp trang HTML từ một URL.

url = requests.get('https://www.imdb.com/search/title/?count=100&groups=top_1000&sort=user_rating')

Bước chân 3: Trong đoạn mã bên dưới, chúng tôi sẽ phân tích trang HTML của URL hiện tại để tạo ra một đối tượng súp đẹp mắt.

soup_obj = BeautifulSoup(url.text, 'html.parser')

Biến “soup_obj” hiện chứa toàn bộ tập lệnh HTML của trang web được yêu cầu, như trong hình bên dưới.

Hãy kiểm tra mã nguồn của trang web để tìm tập lệnh HTML của dữ liệu chúng ta muốn cạo.

Di chuột qua phần tử trang web bạn muốn trích xuất. Sau đó nhấp chuột phải vào nó và đi đến tùy chọn kiểm tra để xem mã nguồn cho mục cụ thể đó. Những hình ảnh dưới đây sẽ hướng dẫn bạn tốt hơn.

Lớp “danh sách danh sách” chứa tất cả dữ liệu liên quan đến video được xếp hạng cao nhất dưới dạng các phân mục trong các thẻ div liên tiếp.

Trong tập lệnh HTML của mỗi tab phim, có một thẻ “h3” trong lớp “lister-item mode-advanced” chứa tên phim, thứ hạng và năm phát hành, như minh họa trong hình bên dưới.

Lưu ý: Phương thức “find” trong beautiful Soup tìm kiếm thẻ đầu tiên khớp với tên đầu vào mà bạn đặt cho nó. Không giống như “find”, phương thức “find_all” tìm kiếm tất cả các thẻ khớp với dữ liệu đầu vào đã cho.

Bước chân 4: Bạn có thể sử dụng phương thức “find” và “find_all” để lưu trữ tập lệnh HTML chứa tên, thứ hạng và năm của mỗi video trong một biến danh sách.

top_movies = soup_obj.find('div',attrs={'class': 'lister-list'}).find_all('h3')

Bước chân 5: Duyệt qua danh sách phim được lưu trữ trong biến: “top_movies” và trích xuất tên, thứ hạng và năm của mỗi phim ở định dạng văn bản từ tập lệnh HTML bằng mã bên dưới.

for movie in top_movies:
    movi_name = movie.a.text
    rank = movie.span.text.rstrip('.')
    year = movie.find('span', attrs={'class': 'lister-item-year text-muted unbold'})
    year = year.text.strip('()')
    print(movi_name + " ", rank+ " ", year+ " ")

Trong ảnh chụp màn hình đầu ra, bạn có thể thấy danh sách các phim có tên, thứ hạng và năm phát hành.

Bạn có thể dễ dàng chuyển dữ liệu đã in sang bảng tính Excel bằng mã Python và sử dụng nó để phân tích.

những từ cuối

Bài đăng này sẽ hướng dẫn bạn cài đặt một công cụ quét web đẹp mắt. Ngoài ra, các ví dụ về cách thu thập dữ liệu mà tôi đã trình bày sẽ giúp bạn bắt đầu với một món súp đẹp mắt.

Vì bạn quan tâm đến cách cài đặt Beautiful Soup để quét web, tôi thực sự khuyên bạn nên xem hướng dẫn dễ hiểu này để tìm hiểu thêm về quét web bằng Python.