beautifulsoup庫是解析、遍歷、維護 「標籤樹」 的功能庫
學習python爬蟲
有所幫助。
beautifulsoup庫我們常稱之為bs4,匯入該庫為:from bs4 import beautifulsoup。其中,import beautifulsoup即主要用bs4中的beautifulsoup類。
bs4庫解析器
beautifulsoup類的基本元素
1 import requests
2 from bs4 import beautifulsoup 3
4res= requests.get('')
5 soup = beautifulsoup(res.text,'lxml')
6print(soup.a)
7 # 任何存在於html語法中的標籤都可以用soup.訪問獲得,當html文件中存在多個相同對應內容時,soup.返回第乙個。8
9print(soup.a.name)
10 # 每個都有自己的名字,可以通過.name獲取,字串型別11
12print(soup.a.attrs)
13print(soup.a.attrs['class'])
14 # 乙個可能有乙個或多個屬性,是字典型別15
16print(soup.a.string)
17 #.string可以取到標籤內非屬性字串18
19 soup1 = beautifulsoup('
','lxml')
20print(soup1.p.string)
21print(type(soup1.p.string))
22 # comment是一種特殊型別,也可以通過
.string取到
執行結果:
登入a
['no-login'] 登入
這裡是注釋
bs4庫的html內容遍歷
html的基本結構
標籤樹的下行遍歷
其中,beautifulsoup型別是標籤樹的根節點。
1 # 遍歷兒子節點
2forchildinsoup.body.children:
3 print(child.name) 4
5 # 遍歷子孫節點
6forchildinsoup.body.descendants:
7 print(child.name)
標籤樹的上行遍歷
1 # 遍歷所有先輩節點時,包括soup本身,所以要if...else...判斷
2forparentin soup.a.parents:
3ifparentis none:
4print(parent)
5else:
6print(parent.name)
執行結果:
divdiv
body
html
[document]
標籤樹的平行遍歷
1 # 遍歷後續節點
2forsiblinginsoup.a.next_sibling:
3 print(sibling) 4
5 # 遍歷前續節點
6forsiblinginsoup.a.previous_sibling:
7 print(sibling)
bs4庫的prettify()方法
prettify()方法可以將**格式搞的標準一些,用soup.prettify()表示。在pycharm中,用print(soup.prettify())來輸出。
操作環境:mac,python 3.6,pycharm 2016.2
python學習詳解 Python學習之字典詳解
在元組和列表中,都是通過編號進行元素的訪問,但有的時候我們按名字進行資料甚至資料結構的訪問,在c 中有map的概念,也就是對映,在python中也提供了內建的對映型別 字典。對映其實就是一組key和value以及之間的對映函式,其特點是 key的唯一性 key與value的一對多的對映。1.字典的建...
Python學習之函式
0 引論 函式是實現 復用的主要途徑之一,而且函式的使用也可以使得程式更加容易理解,更加規範化。程式很多時候並不是給計算機的,而是給人看的。這裡總結一下python中的函式的應用 1 函式 首先python中的函式的格式是怎樣的。def 函式名 形參 函式體 下面是乙個計算fibonacci數列的函...
python學習之函式
抽象 斐波那契數列 fibs 0,1 for i in range 10 print fibs fibs 0,1 i 2 while i 20 i 1 print fibs 使用callable判斷函式是否可以呼叫 import math x 1 y math.sqrt print callable...