Beautiful Soup在爬蟲中的基本使用語法

2021-10-11 02:27:17 字數 2071 閱讀 4488

beautiful soup是python 的乙個html 或 xml的解析庫,借助網頁的結構和屬性特徵來解析網頁,便於使用者抓取資料。

beautiful soup能夠自動將輸入的文件轉化為unicode,輸出的文件轉換為utf-8,這大大提高了文件提取的效率。

基本用法如下

beautifulsoup(markup,

'lxml'

)

from bs4 import beautifulsoup

import requests

url =

''# 構造乙個html文件

r = requests.get(url)

.text

soup = beautifulsoup(r,

'lxml'

)# prettify 可以把要解析的字串以標準的html輸出

print

(soup.prettify)

# 輸出html中title的內容

print

(soup.title.string)

選擇相應的節點,直接使用soup.title/soup.head/soup.p等,即可獲取資訊。需要注意的是soup.p,只能獲取第乙個節點的p

from bs4 import beautifulsoup

import requests

url =

''# 構造乙個html文件

r = requests.get(url)

.text

soup = beautifulsoup(r,

'lxml'

)# prettify 可以把要解析的字串以標準的html輸出

print

(soup.prettify)

# 輸出title

print

(soup.title)

# 輸出html中title文字的值

print

(soup.title.string)

# 輸出head

print

(soup.head)

# 輸出節點p

print

(soup.p)

面對複雜的網頁結構,採用屬性來選擇比較麻煩,這就需要使用find_all(),find()進行選擇了。

find_all()

它的api如下

find_all(name, attrs, recursive, text,

**kwargs)

表示:

name:根據節點名查詢

attrs:通過傳入屬性查詢

text:用來匹配節點的文字

find()的用法與find_all()的用法一樣,區別是fin()返回的是單個元素,find_all()返回的是所有元素。

基本語法:

from bs4 import beautifulsoup

import requests

url =

''# 構造乙個html文件

r = requests.get(url)

.text

soup = beautifulsoup(r,

'lxml'

)# 根據節點名查詢

print

(soup.find_all(name=

'ul'))

# 通過傳入屬性查詢

print

(soup_find_all(attrs=))

print

(soup_find_all(attrs=))

# 用來匹配節點的文字

print

(soup.find_all(text=re.

compile

('link'))

)

如果對css選擇器熟悉的話,可以使用select進行選擇。

此文不做說明,更多css資訊請檢視這裡。

《python3 網路爬蟲開發實戰》 崔慶才著

20201201 建立

學習日記 使用BeautifulSoup爬取小說

半個月前入坑了python,近幾天看到csdn上有一些關於美麗的湯 beautifulsoup 的介紹和使用方法,於是自己也試著寫了乙個爬蟲。小白的學習日記,若有不當之處,歡迎大神們指點!使用python版本 python3.8 隨便在網上搜了個 試著爬下來。鏈結 檢視網頁的源 發現文章內容都是p標...

爬知乎了解BeautifulSoup用法

text raw input 請輸入驗證碼 encode gb18030 return text def zhihu sess requests.session 請求報頭 首先獲取登入頁面,找到需要post的資料 xsrf 同時會記錄當前網頁的cookie值 html sess.get header...

使用BeautifulSoup的簡單小爬蟲

安裝beautifulsoup 先從官網上down下來 然後解壓再用python安裝 官網位址 具體還是網上搜吧 超級多 爬取模組 其實貼吧的 還是比較容易拼接的 所以有挺多人拿貼吧練手來著 def start self for i in range self.topic limit 50 self...