Beautiful Soup - Cài đặt
Vì BeautifulSoup không phải là một thư viện python tiêu chuẩn nên trước tiên chúng ta cần cài đặt nó. Chúng tôi sẽ cài đặt thư viện BeautifulSoup 4 (còn được gọi là BS4), là thư viện mới nhất.
Để cô lập môi trường làm việc của chúng ta để không làm ảnh hưởng đến thiết lập hiện có, trước tiên chúng ta hãy tạo một môi trường ảo.
Tạo môi trường ảo (tùy chọn)
Môi trường ảo cho phép chúng tôi tạo một bản sao làm việc riêng biệt của python cho một dự án cụ thể mà không ảnh hưởng đến thiết lập bên ngoài.
Cách tốt nhất để cài đặt bất kỳ máy gói python nào là sử dụng pip, tuy nhiên, nếu pip chưa được cài đặt (bạn có thể kiểm tra bằng cách sử dụng - “pip –version” trong dấu nhắc lệnh hoặc shell của bạn), bạn có thể cài đặt bằng cách đưa ra lệnh dưới đây -
Môi trường Linux
$sudo apt-get install python-pip
Môi trường Windows
Để cài đặt pip trong windows, hãy làm như sau:
Tải xuống get-pip.py từ https://bootstrap.pypa.io/get-pip.py hoặc từ github đến máy tính của bạn.
Mở dấu nhắc lệnh và điều hướng đến thư mục chứa tệp get-pip.py.
Chạy lệnh sau:
>python get-pip.py
Vậy là xong, pip hiện đã được cài đặt trong máy tính windows của bạn.
Bạn có thể xác minh pip của mình đã được cài đặt bằng cách chạy lệnh dưới đây -
>pip --version
pip 19.2.3 from c:\users\yadur\appdata\local\programs\python\python37\lib\site-packages\pip (python 3.7)
Cài đặt môi trường ảo
Chạy lệnh dưới đây trong dấu nhắc lệnh của bạn -
>pip install virtualenv
Sau khi chạy, bạn sẽ thấy ảnh chụp màn hình bên dưới -
Lệnh dưới đây sẽ tạo một môi trường ảo (“myEnv”) trong thư mục hiện tại của bạn -
>virtualenv myEnv
Ảnh chụp màn hình
Để kích hoạt môi trường ảo của bạn, hãy chạy lệnh sau:
>myEnv\Scripts\activate
Trong ảnh chụp màn hình ở trên, bạn có thể thấy chúng ta có tiền tố “myEnv” cho chúng ta biết rằng chúng ta đang ở trong môi trường ảo “myEnv”.
Để thoát khỏi môi trường ảo, hãy chạy hủy kích hoạt.
(myEnv) C:\Users\yadur>deactivate
C:\Users\yadur>
Khi môi trường ảo của chúng tôi đã sẵn sàng, bây giờ chúng ta hãy cài đặt beautifulsoup.
Cài đặt BeautifulSoup
Vì BeautifulSoup không phải là một thư viện chuẩn nên chúng ta cần cài đặt nó. Chúng tôi sẽ sử dụng gói BeautifulSoup 4 (được gọi là bs4).
Máy Linux
Để cài đặt bs4 trên Debian hoặc Ubuntu linux bằng trình quản lý gói hệ thống, hãy chạy lệnh dưới đây:
$sudo apt-get install python-bs4 (for python 2.x)
$sudo apt-get install python3-bs4 (for python 3.x)
Bạn có thể cài đặt bs4 bằng easy_install hoặc pip (trong trường hợp bạn gặp sự cố khi cài đặt bằng cách sử dụng gói hệ thống).
$easy_install beautifulsoup4
$pip install beautifulsoup4
(Bạn có thể cần sử dụng easy_install3 hoặc pip3 tương ứng nếu bạn đang sử dụng python3)
Máy Windows
Để cài đặt beautifulsoup4 trong windows rất đơn giản, đặc biệt nếu bạn đã cài đặt pip.
>pip install beautifulsoup4
Vì vậy, bây giờ beautifulsoup4 đã được cài đặt trong máy của chúng tôi. Hãy để chúng tôi nói về một số vấn đề gặp phải sau khi cài đặt.
Sự cố sau khi cài đặt
Trên máy windows bạn có thể gặp phải lỗi cài đặt sai phiên bản chủ yếu do -
lỗi: ImportError “No module named HTMLParser”, thì bạn phải chạy phiên bản python 2 của mã trong Python 3.
lỗi: ImportError “No module named html.parser” thì bạn phải chạy phiên bản Python 3 của mã trong Python 2.
Cách tốt nhất để thoát khỏi hai trường hợp trên là cài đặt lại BeautifulSoup một lần nữa, xóa hoàn toàn cài đặt hiện có.
Nếu bạn nhận được SyntaxError “Invalid syntax” trên dòng ROOT_TAG_NAME = u '[document]', thì bạn cần chuyển đổi mã python 2 thành python 3, chỉ bằng cách cài đặt gói -
$ python3 setup.py install
hoặc bằng cách chạy thủ công tập lệnh chuyển đổi từ 2 đến 3 của python trên thư mục bs4 -
$ 2to3-3.2 -w bs4
Cài đặt trình phân tích cú pháp
Theo mặc định, Beautiful Soup hỗ trợ trình phân tích cú pháp HTML có trong thư viện chuẩn của Python, tuy nhiên nó cũng hỗ trợ nhiều trình phân tích cú pháp python bên thứ ba bên ngoài như trình phân tích cú pháp lxml hoặc html5lib.
Để cài đặt trình phân tích cú pháp lxml hoặc html5lib, hãy sử dụng lệnh -
Máy Linux
$apt-get install python-lxml
$apt-get insall python-html5lib
Máy Windows
$pip install lxml
$pip install html5lib
Nói chung, người dùng sử dụng lxml để tăng tốc độ và bạn nên sử dụng trình phân tích cú pháp lxml hoặc html5lib nếu bạn đang sử dụng phiên bản cũ hơn của python 2 (trước phiên bản 2.7.3) hoặc python 3 (trước 3.2.2) vì trình phân tích cú pháp HTML tích hợp của python là không tốt lắm trong việc xử lý phiên bản cũ.
Running Beautiful Soup
Đã đến lúc thử nghiệm gói Beautiful Soup của chúng tôi trên một trong các trang html (lấy trang web - https://www.tutorialspoint.com/index.htm, bạn có thể chọn bất kỳ trang web nào khác mà bạn muốn) và trích xuất một số thông tin từ đó.
Trong đoạn mã dưới đây, chúng tôi đang cố gắng trích xuất tiêu đề từ trang web -
from bs4 import BeautifulSoup
import requests
url = "https://www.tutorialspoint.com/index.htm"
req = requests.get(url)
soup = BeautifulSoup(req.text, "html.parser")
print(soup.title)
Đầu ra
<title>H2O, Colab, Theano, Flutter, KNime, Mean.js, Weka, Solidity, Org.Json, AWS QuickSight, JSON.Simple, Jackson Annotations, Passay, Boon, MuleSoft, Nagios, Matplotlib, Java NIO, PyTorch, SLF4J, Parallax Scrolling, Java Cryptography</title>
Một nhiệm vụ phổ biến là trích xuất tất cả các URL trong một trang web. Để làm được điều đó, chúng ta chỉ cần thêm dòng mã bên dưới -
for link in soup.find_all('a'):
print(link.get('href'))
Đầu ra
https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/about/about_careers.htm
https://www.tutorialspoint.com/questions/index.php
https://www.tutorialspoint.com/online_dev_tools.htm
https://www.tutorialspoint.com/codingground.htm
https://www.tutorialspoint.com/current_affairs.htm
https://www.tutorialspoint.com/upsc_ias_exams.htm
https://www.tutorialspoint.com/tutor_connect/index.php
https://www.tutorialspoint.com/whiteboard.htm
https://www.tutorialspoint.com/netmeeting.php
https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/tutorialslibrary.htm
https://www.tutorialspoint.com/videotutorials/index.php
https://store.tutorialspoint.com
https://www.tutorialspoint.com/gate_exams_tutorials.htm
https://www.tutorialspoint.com/html_online_training/index.asp
https://www.tutorialspoint.com/css_online_training/index.asp
https://www.tutorialspoint.com/3d_animation_online_training/index.asp
https://www.tutorialspoint.com/swift_4_online_training/index.asp
https://www.tutorialspoint.com/blockchain_online_training/index.asp
https://www.tutorialspoint.com/reactjs_online_training/index.asp
https://www.tutorix.com
https://www.tutorialspoint.com/videotutorials/top-courses.php
https://www.tutorialspoint.com/the_full_stack_web_development/index.asp
….
….
https://www.tutorialspoint.com/online_dev_tools.htm
https://www.tutorialspoint.com/free_web_graphics.htm
https://www.tutorialspoint.com/online_file_conversion.htm
https://www.tutorialspoint.com/netmeeting.php
https://www.tutorialspoint.com/free_online_whiteboard.htm
http://www.tutorialspoint.com
https://www.facebook.com/tutorialspointindia
https://plus.google.com/u/0/+tutorialspoint
http://www.twitter.com/tutorialspoint
http://www.linkedin.com/company/tutorialspoint
https://www.youtube.com/channel/UCVLbzhxVTiTLiVKeGV7WEBg
https://www.tutorialspoint.com/index.htm
/about/about_privacy.htm#cookies
/about/faq.htm
/about/about_helping.htm
/about/contact_us.htm
Tương tự, chúng ta có thể trích xuất thông tin hữu ích bằng cách sử dụng beautifulsoup4.
Bây giờ chúng ta hãy hiểu thêm về "súp" trong ví dụ trên.