網路爬蟲 Beautiful Soup庫詳解

2021-10-05 14:26:45 字數 3211 閱讀 5350

beautiful soup庫,也叫beautifulsoup4 或 bs4 約定引用方式如下,即主要是用beautifulsoup 類

from bs4 import beautifulsoup
import bs4
from bs4 import beautifulsoup

soup = beautifulsoup("data", "html.parser")

# 亦可開啟本地html檔案

soup2 = beautifulsoup(open("c:"), "html.parser")

其中 "html.parser"是bs4庫的解析器

解析器使用方法

條件bs4的html解析器

beautifulsoup(mk, 'html.parser')

安裝bs4庫

lxml的html解析器

beautifulsoup(mk, 'lxml')

pip install lxml

lxml的xml解析器

beautifulsoup(mk, 'xml')

pip install lxml

html5lib的解析器

beautifulsoup(mk, 'html5lib')

pip install html5lib

標籤,最基本的資訊組織單元,分別用<>和標明開頭和結尾

任何存在於html語法中的標籤都可以用soup.訪問獲得

當html文件中存在多個相同對應內容時,soup.返回第乙個

from bs4 import beautifulsoup

soup = beautifulsoup(demo, "html.parser")

print(soup.title)

# 列印輸出

demo page

tag = soup.a

print(tag)

# 列印輸出

python

標籤的名字,的名字是'p',使用格式:.name,型別為字串

from bs4 import beautifulsoup

soup = beautifulsoup(demo, "html.parser")

print(soup.a.name)

# 列印輸出

'a'

標籤的屬性,字典形式組織,使用格式:.attrs ,型別為字典型別

from bs4 import beautifulsoup

soup = beautifulsoup(demo, "html.parser")

tag = soup.a

print(tag.attrs)

# 列印輸出

print(tag.attrs['class'])

# 列印輸出

['py']

標籤內非屬性字串,<>…中字串,使用格式:.string

from bs4 import beautifulsoup

soup = beautifulsoup(demo, "html.parser")

print(soup.a)

# 列印輸出

python

print(soup.a.string)

# 列印輸出

'python'

標籤內字串的注釋部分,一種特殊的comment型別

from bs4 import beautifulsoup

soup = beautifulsoup("

", "html.parser")

print(soup.b.string)

# 列印輸出

'this is a comment'

# type(soup.b.string)為print(soup.p.string)

# 列印輸出

'this is not a comment'

# type(soup.p.string)為

屬性

說明.contents

子節點的列表,將所有兒子節點存入列表

.children

子節點的迭代型別,與.contents類似,用於迴圈遍歷兒子節點

.descendants

子孫節點的迭代型別,包含所有子孫節點,用於迴圈遍歷

for child in soup.body.children:

print(child)

for child in soup.body.descendants:

print(child)

屬性

說明.parent

節點的父親標籤

.parents

節點先輩標籤的迭代型別,用於迴圈遍歷先輩節點

遍歷所有先輩節點時,包括soup本身,所以使用時要區別判斷

from bs4 import beautifulsoup

soup = beautifulsoup(demo, "html.parser")

for parent in soup.a.parents:

if parent is none:

print(parent)

else:

print(parent.name)

屬性

說明.next_sibling

返回按照html文字順序的下乙個平行節點標籤

.previous_sibling

返回按照html文字順序的上乙個平行節點標籤

.next_siblings

迭代型別,返回按照html文字順序的後續所有平行節點標籤

.previous_siblings

迭代型別,返回按照html文字順序的前續所有平行節點標籤

平行遍歷發生在同乙個父節點下的各節點間

# 遍歷後續節點

for sibling in soup.a.next_sibling:

print(sibling)

# 遍歷前續節點

for sibling in soup.a.previous_sibling:

print(sibling)

Python學習之BeautifulSoup庫詳解

beautifulsoup庫是解析 遍歷 維護 標籤樹 的功能庫 學習python爬蟲 有所幫助。beautifulsoup庫我們常稱之為bs4,匯入該庫為 from bs4 import beautifulsoup。其中,import beautifulsoup即主要用bs4中的beautiful...

python3安裝beautifulsoup全過程

1.環境變數 參考設定 python3環境變數設定 解壓安裝包至python安裝目錄下 3.在命令列進入beautifulsoup的安裝目錄下,輸入python setup.py install 安裝成功後,進入python lib site packages將bs4資料夾複製到lib資料夾下,將p...

網路爬蟲 多執行緒爬蟲

多執行緒爬蟲 import threading class one threading.thread def init self threading.thread.init self def run self for i in range 0,10 print 我是執行緒1 class two th...