python爬虫類-BeautifulSoup(2)子孫ノード(.children.descendants)と親ノード(.parents)

10899 ワード

3.1子ノードと子ノード
soup.body.h1#   body     h1,  h1    body      

同じ理屈だdiv.find_all(‘img’)はすべてのdivの中のimgラベルを見つけます.
...descendants
比較コードは次のとおりです.
html = urlopen('http://www.pythonscraping.com/pages/page3.html')
soup = BeautifulSoup(html, 'lxml')
children = soup.find('table',{'id':'giftList'}).children
descendants = soup.find('table',{'id':'giftList'}).descendants
sum = 0
for child in children:
    print(child)
    sum +=1
print(sum)
sum2 = 0
for descendant in descendants:
    sum2+=1
    print(descendant)
print(sum2)

実行結果からsum=13,sum 2=86 descendantsの第1部を比較すると
#============= soup.find('table',{'id':'giftList'})    ====
Item Title

Description

Cost

Image
#============ soup.find('table',{'id':'giftList'})    ====
        #============     ,('table',{'id':'giftList'})     ==
Item Title
       #============     ,('table',{'id':'giftList'})     ==

Item Title#=========        ,      ================

#============  ====================
Description


Description


Cost


Cost
.... 
  

,children 。 descendants , 。

3.2

, ,.parents .parent。

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')
soup = BeautifulSoup(html)
print(soup.find('img', {'src':'../img/gifts/img1.jpg'}).parent.previous_sibling.get_text())

コードがどのように しているかを します.

--
--(3)
    --"$15.00"(4)
--s(2)
    -- "../img/gifts/img1.jpg">(1) 
  

1. src=”../img/gifts/img1.jpg” img
2. img s.
3. s
4.