Làm việc với các phần tử cha
Khi scrape các trang, bạn sẽ có khả năng khám phá rằng bạn cần tìm ra các cha của các tags ít thường xuyên hơn
so với bạn cần tìm ra các con hay anh em của chúng. Điển hình thì, khi bạn nhìn vào các trang HTML với mục
tiêu crawl chúng, bạn bắt đầu bằng cách nhìn vào tầng đỉnh của các tags, và sau đó định hình ra làm cách nào
khoan sâu con đường của bạn xuống vào chính xác đoạn dữ liệu bạn muốn. Thỉnh thoảng, tuy nhiên, bạn có thể
thấy bản thân bạn trong tình huống dị lập cái yêu cầu các hàm tìm cha của BeautifulSoup .parent và .parents.
Ví dụ:
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen(‘http://www.pythonscraping.com/pages/page3.html’)
bs = BeautifulSoup(html, ‘html.parser’)
print(bs.find(‘img’,{‘src’:’../img/gifts/img1.jpg’})
.parent.previous_sibling.get_text())
Code này sẽ in ra price của object trình bày bởi ảnh tại vị trí ../img/gifts/img1.jpg (trong trường hợp này, price
là $15.00)
Cái này làm việc như thế nào? Hình họa sau trình bày cấu trúc cây của bộ phận trang HTML bạn đang làm việc với,
với các bước đánh số:
(1) tag image nơi src=”../img/gifts/img1.jpg” trước tiên được chọn.
(2) Bạn chọn cha của tag đó (trong trường hợp này, tag td).
(3) Bạn chọn previous_sibling của tag td (trong trường hợp này, tag td cái chứa dollar value của product)
(4) Bạn chọn text bên trong tag đó “$15.00”.