Python中Beautifulsoup學習筆記二

2021-10-06 17:47:18 字數 1759 閱讀 3560

1、用tag獲取相應**塊的剖析樹:

contents屬性是乙個列表,裡面儲存了該剖析樹的直接兒子。

如:

1 html = soup.contents[0] # ...

2 head = html.contents[0] #3 body = html.contents[1] # ...

2、用contents, parent, nextsibling, previoussibling尋找父子兄弟tag

為了更加方便靈活的分析html**塊,beautifulsoup提供了幾個簡單的方法直接獲取當前tag塊的父子兄弟。

假設我們已經獲得了body這個tag塊,我們想要尋找, , 第乙個, 第二個這四個tag塊:

3、用find, findparent, findnextsibling, findprevioussibling尋找祖先或者子孫 tag:

有了上面的基礎,這裡應該很好理解了,例如find方法(我理解和findchild是一樣的),就是以當前節點為起始,遍歷整個子樹,找到後返回。

而這些方法的複數形式,會找到所有符合要求的tag,以list的方式放回。他們的對應關係是:find->findall, findparent->findparents, findnextsibling->findnextsiblings...

裡我們重點講一下find的幾種用法,其他的模擬:

find(name=none, attrs={}, recursive=true, text=none, **kwargs)

(ps:只講幾種用法,完整請看官方link :

1) 搜尋tag:

1 find(tagname)        # 直接搜尋名為tagname的tag 如:find('head')

2 find(list) # 搜尋在list中的tag,如: find(['head', 'body'])

3 find(dict) # 搜尋在dict中的tag,如:find()

4 find(re.compile('')) # 搜尋符合正則的tag, 如:find(re.compile('^p')) 搜尋以p開頭的tag

5 find(lambda) # 搜尋函式返回結果為true的tag, 如:find(lambda name: if len(name) == 1) 搜尋長度為1的tag

6 find(true) # 搜尋所有tag

2) 搜尋屬性(attrs):

1 find(id='***')                                  # 尋找id屬性為***的

2 find(attrs=) # 尋找id屬性符合正則且algin屬性為***的

3 find(attrs=) # 尋找有id屬性但是沒有algin屬性的

3) 搜尋文字(text):

注意,文字的搜尋會導致其他搜尋給的值如:tag, attrs都失效。

方法與搜尋tag一致

4) recursive, limit:

recursive=false表示只搜尋直接兒子,否則搜尋整個子樹,預設為true。

當使用findall或者類似返回list的方法時,limit屬性用於限制返回的數量,如findall('p', limit=2): 返回首先找到的兩個tag

Python學習筆記初識beautifulsoup

今天上午在電腦上把 python簡明教程 大略看完了,對python的基本語法和用法熟悉了一些。下午開始看beautifulsoup,用 這個教程安裝成功 自從把python路徑加到環境變數裡面,覺得開發環境好用了許多,好吧是我之前太菜,其實還因為之前我看的 笨辦法學python 裡面好像就沒有說環...

python中 python中的 與

這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...

python中否定for 在python中否定函式

有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...