Beautiful Soup的用法(二):元素之間的關系

一開始我們就舉了這樣的例子,使用find或者是find_allhtml的代碼進行搜索,為了弄清Beautiful Soup 中的關系,我們來看看這樣的一段代碼,其中會產生一些疑問,通過疑問的排查過程,能夠更進一步的了解Beautiful Soup

看如下的代碼:

_#!/usr/bin/python  
#coding=utf-8  

_**from** bs4 **import** BeautifulSoup  



html = """  
<html><head><title>The Dormouse's story</title></head>  
<body>  
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>  
<p class="story">Once upon a time there were three little sisters; and their names were  
<a href="http://example.com/elsie" class="sister" id="link1"><!-- Elsie --></a>,  
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and  
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;  
and they lived at the bottom of a well.</p>  
</body>  
</html>  
"""  

soup = BeautifulSoup(html, "lxml")  
print 'soup',type(soup)  

body_tag = soup.find('body')  
print 'body_tag',type(body_tag)  

a_tag = body_tag.find('a')  
print 'a_tag',type(a_tag)  

a_list = body_tag.find_all('a')  

print 'a_list',type(a_list)

輸出的結果如下:

Connected to pydev debugger (build 172.3968.37)
soup <class 'bs4.BeautifulSoup'>
body_tag <class 'bs4.element.Tag'>
a_tag <class 'bs4.element.Tag'>
a_list <class 'bs4.element.ResultSet'>

可以看出,soupbs4.BeautifulSoup類,他有一個函數為find,返回的結果是 bs4.element.Tag類,同時這個bs4.element.Tag類也有一個函數為find,好像bs4.BeautifulSoupbs4.element.Tag 好像有什么關聯一樣,進一步的來了解這兩個類,我們使用help 來看看。

>>> help(BeautifulSoup)
Help on class BeautifulSoup in module bs4:  
class BeautifulSoup(bs4.element.Tag)
...

發現了class BeautifulSoup(bs4.element.Tag) 說明 bs4.element.TagBeautifulSoup 的父類,bs4.element.Tag有德屬性,BeautifulSoup 都會擁有的。這是很關鍵的一個聯系,bs4.element.Tag 通過find后返回的是自己也就是bs4.element.Tag,這樣就可以一直find下去,因為他們都有同一個 函數find

我們再來看一下 find_all,他返回的結果為bs4.element.ResultSet ,這個bs4.element.ResultSet 是什么東西呢?通過同樣的方法,我們會發現bs4.element.ResultSet 其實是一個listlist中的每個元素還是bs4.element.Tag,這樣的話還是可以使用find的。必須理清這幾個之前的關系,后面處理起來就非常方便了。

通過上面的分析以后,我們發現重點是bs4.element.Tag,需要清楚bs4.element.Tag的各個屬性,這是Beautiful Soup 的關鍵。

轉載請標明來之:http://www.peyycv.tw/

更多教程:阿貓學編程

Beautiful Soup的用法 系類文章

所有評論

如果對文章有異議,請加qq:1752338621