資料解析模組BeautifulSoup簡單使用

2022-03-22 23:19:09 字數 3347 閱讀 4452

1、準備測試頁面test.html

<

html

>

<

head

>

<

title

>

the dormouse's story

title

>

head

>

<

body

>

<

p class

="title"

>

<

b>

the dormouse's story

b>

p>

<

p class

="story"

>

once upon a time there were three little sisters; and their names were

<

a class

="sister"

href

=""id="link1"

>

elsie

a>

,

<

a class

="sister"

href

=""id="link2"

>

lacie

a>

and

<

a class

="sister"

href

=""id="link2"

>

tillie

a>

; and they lived at the bottom of a well.

p>

<

p class

="story"

>

...p

>

body

>

html

>

test.html

2、安裝相關模組

pip install bs4

pip install requests

1、例項化beautifulsoup物件

from bs4 import

beautifulsoup

#例項化beautifulsoup物件

#1、轉化本地html檔案

soup = beautifulsoup(open('

本地檔案

'), '

lxml')

#如使用本地檔案

with open('

test.html

',mode='

r',encoding='

utf-8

') as f:

soup = beautifulsoup(f,'

lxml')

print(soup.a) #

列印第乙個a標籤的所有內容

#2、通過requests.get或其它方式獲取到的html資料

soup = beautifulsoup('

字串型別或者位元組型別

', '

lxml')

#如通過requests獲取到的網頁資料

from

requests

page_html = requests.get(url='

').text

soup = beautifulsoup(page_html, '

lxml')

print(soup.a) #

列印第乙個a標籤的所有內容

2、通過例項化物件獲取標籤,標籤內容,標籤屬性(這裡以上面準備的test.html為示例進行演示)。

import

requests

from bs4 import

beautifulsoup

with open(

'test.html

',mode='

r',encoding='

utf-8

') as f:

soup = beautifulsoup(f,'

lxml')

print(soup.title) #

列印title標籤的全部內容

print(soup.a) #

列印a標籤的全部內容

print(soup.a.attrs) #

列印a標籤的所有屬性內容

print(soup.a.attrs['

href

']) #

列印a標籤href屬性的值

print(soup.a['

href

']) #

也可以簡寫

#列印a標籤中的文字內容內容

print

(soup.a.string)

print

(soup.a.text)

print

(soup.a.get_text())

# 需要注意的是,如果a標籤中還巢狀有其它標籤,soup.a.string將獲取不到值返回乙個none,

# 而soup.a.text和soup.a.get_text()可以獲取到包括a標籤在內的所有子標籤中的文字內容。

# 注意:soup.tagname只定位到第一次出現的tagname標籤便結束匹配

soup.find('a

') #

與soup.tagname一樣只匹配到第一次出現的。不同的是可以使用標籤和屬性進行聯合查詢。

print(soup.find('

a',)) #

根據標籤和屬性進行定位

find_all()

#和find的用法一樣,只是返回值是乙個列表,這裡就不演示了

#根據選擇器進行定位

#常見的選擇器:標籤選擇器(a)、類選擇器(.)、id選擇器(#)、層級選擇器

soup.select('

a') #

根據標籤定位到所有a標籤

print(soup.select('

.sister

')) #

根據類名sister定位

print(soup.select('

#link1

')) #

根據id 進行定位

print(soup.select('

p>a

')) #

定位所有p標籤下的a標籤

Python資料採集1 BeautifulSoup

1.網路資料採集是一種通過多種手段收集網路資料的方式。最常用的方法是寫乙個自動化程式向網路伺服器請求資料 通常是用html表單或其他網頁檔案 然後是對資料進行解析,提取所需要的資訊。2.網路爬蟲工作流程 1 通過 網域名稱獲取html資料 2 根據目標資訊解析資料 3 儲存目標資訊 4 如有必要,轉...

beautiful 獲取中國天氣網資料

import re import os import time import pandas as pd import requests from bs4 import beautifulsoup import random 完整 url proxy response requests.get url...

Python subprocess模組解析

在學習這個模組前,我們先用python的help 函式檢視一下subprocess模組是幹嘛的 description this module allows you to spawn processes,connect to their input output error pipes,and ob...