Chạy BeautifulSoup (tiếp tục)
Khi bạn tạo một BeautifulSoup object, 2 đối số được truyền vào:
bs = BeautifulSoup(html.read(), ‘html.parser’)
Cái đầu tiên là HTML string cái object dựa vào, và cái thứ hai chỉ ra cái duyệt cái bạn muốn BeautifulSoup sử dụng để tạo
object đó. Trong đa số các trường hợp, nó không có khác biệt parser nào bạn chọn.
html.parser là một cái duyệt cái được bao gồm với Python 3 và không yêu cầu các cái đặt thêm để sử dụng. Ngoại trừ
nơi được yêu cầu, chúng ta sẽ sử dụng parser này xuyên suốt các học phần.
Một parser thông dụng khác là lxml. Cái này có thể được cài đặt thông qua pip:
$ pip install lxml
lxml có thể được sử dụng với BeautifulSoup bằng cách thay đổi parser string được cung cấp:
bs = BeautifulSoup(html.read(), ‘lxml’)
lxml có một vài ưu điểm so với html.parser ở chỗ rằng nó là nhìn chung tốt hơn duyệt HTML code lộn xộn hay không
đúng định dạng. Nó khoan dung và sửa các vấn đề như các tags không đóng, các tags nested không đúng đắn, và các
tags head hay body bị bỏ.
lxml cũng đôi chút nhanh hơn html.parser, mặc dù tốc độ không nhất thiết là lợi thế trong web scraping, cho là
tốc độ mạng bản thân nó sẽ hầu như luôn là nút thắt cổ chai lớn nhất của bạn.
Tránh Web Scraping Code tối ưu hóa quá
Các thuật toán thanh lịch được yêu thích chứng kiến, nhung khi nó đi đến web scraping, chúng có thể không có
ảnh hưởng thực tiễn. Một vài giây nhỏ của thời gian xử lí sẽ có khả năng bị còi cọc đi bởi – đôi khi các giây
thực của trễ mạng cái một yêu cầu mạng mất.
Một web scraping code tốt nhìn chung tập trung vào các thực thi đọc được dễ dàng và mạnh mẽ, hơn là tối ưu
hóa xử lí thông minh.