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 ...