Beautiful Soup - Phần chỉ phân tích cú pháp của tài liệu
Có nhiều trường hợp bạn muốn trích xuất các loại thông tin cụ thể (chỉ các thẻ <a>) bằng Beautifulsoup4. Lớp SoupStrainer trong Beautifulsoup cho phép bạn phân tích cú pháp chỉ một phần cụ thể của tài liệu đến.
Một cách là tạo SoupStrainer và chuyển nó cho hàm tạo Beautifulsoup4 làm đối số parse_only.
SoupStrainer
SoupStrainer cho BeautifulSoup biết những phần trích xuất nào và cây phân tích cú pháp chỉ bao gồm những phần tử này. Nếu bạn thu hẹp thông tin cần thiết của mình vào một phần cụ thể của HTML, điều này sẽ tăng tốc kết quả tìm kiếm của bạn.
product = SoupStrainer('div',{'id': 'products_list'})
soup = BeautifulSoup(html,parse_only=product)
Các dòng mã trên sẽ chỉ phân tích cú pháp các tiêu đề từ trang web sản phẩm, có thể nằm bên trong trường thẻ.
Tương tự như trên, chúng ta có thể sử dụng các đối tượng soupStrainer khác để phân tích cú pháp thông tin cụ thể từ thẻ HTML. Dưới đây là một số ví dụ -
from bs4 import BeautifulSoup, SoupStrainer
#Only "a" tags
only_a_tags = SoupStrainer("a")
#Will parse only the below mentioned "ids".
parse_only = SoupStrainer(id=["first", "third", "my_unique_id"])
soup = BeautifulSoup(my_document, "html.parser", parse_only=parse_only)
#parse only where string length is less than 10
def is_short_string(string):
return len(string) < 10
only_short_strings =SoupStrainer(string=is_short_string)