find() và find_all() với BeautifulSoup (tiếp tục)
Tham số kwargs thêm cho phép bạn truyền các đối số đặt tên thêm bạn muốn vào phương thức. Bất cứ đối số thêm cái
find hay find_all không nhận ra sẽ được sử dụng như những cái khớp thuộc tính tag. Ví dụ:
title = bs.find_all(id=’title’, class_=’text’)
Cái này trả về tag đầu tiên với từ text trong thuộc tính class và title trong thuộc tính id. Chú ý rằng theo
thông lệ mỗi giá trị cho một id nên được sử dụng chỉ một lần trên trang. Vì vậy, trong thực hành, một dòng giống
cái này có thể không hữu dụng cụ thể và nên là tương ứng với sử dụng hàm find:
title = bs.find(id=’title’)
Các đối số từ khóa và class
class là một từ dành riêng trong Python cái không thể được sử dụng như một biến hay tên đối số. Ví dụ, nếu bạn
thử lời gọi sau, bạn sẽ nhận một lỗi cú pháp vì sử dụng không theo tiêu chuẩn class:
bs.find_all(class=’green’)
Vì lí do này, BeautifulSoup yêu cầu rằng bạn sử dụng đối số từ khóa _class thay vì class.
Bạn có thể nhận thấy rằng BeautifulSoup đã có một cách thức để tìm ra các tags dựa trên các thuộc tính và giá
trị của chúng: tham số attr. Trên thục tế, hai dòng sau là giống nhau:
bs.find(id=’text’)
bs.find(attrs={‘id’:’text’})
Tuy nhiên, cú pháp của dòng đầu tiên là ngắn hơn và cho là dễ dàng hơn để làm việc với cho các cái lọc nhanh
nơi bạn cần các tags theo một thuộc tính cụ thể. Khi các cái lọc trở nên phức tạp hơn, hay khi bạn cần truyền
các tùy chọn giá trị thuộc tính như một list trong các đối số, bạn có thể muốn sử dụng tham số attrs:
bs.find(attrs={‘class’:[‘red’, ‘blue’, ‘green’]})