Beautiful Soup是python的一個庫,最主要的功能是從網頁抓取資料,檢視文件
https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
Python爬蟲教程-23-資料提取-BeautifulSoup4(一)
- Beautiful Soup提供一些簡單的、python式的函式用來處理導航、搜尋、修改分析樹等功能
- 它是一個工具箱,通過解析文件為使用者提供需要抓取的資料,因為簡單,所以不需要多少程式碼就可以寫出一個完整的應用程式
- Beautiful Soup自動將輸入文件轉換為Unicode編碼,輸出文件轉換為utf-8編碼。你不需要考慮編碼方式,除非文件沒有指定一個編碼方式,這時,Beautiful Soup就不能自動識別編碼方式了。然後,你僅僅需要說明一下原始編碼方式就可以了
常用資料提取工具的比較
- 1.正則:很快,不好用,不需要安裝
https://blog.csdn.net/qq_40147863/article/details/82181151 - 2.lxml:比較快,使用簡單,需要安裝
https://blog.csdn.net/qq_40147863/article/details/82192119 - 3.BeautifulSoup4(建議):慢,使用簡單,需要安裝
BeautifulSoup4 的安裝
- 【PyCharm】>【file】>【settings】>【Project Interpreter】>【+】 >【BeautifulSoup4】>【install】
具體操作截圖:
BeautifulSoup 的簡單使用案例
- 程式碼27bs.py檔案:https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py27bs.py
# BeautifulSoup 的使用案例
from urllib import request
from bs4 import BeautifulSoup
url = 'http://www.baidu.com/'
rsp = request.urlopen(url)
content = rsp.read()
soup = BeautifulSoup(content, 'lxml')
# bs 自動解碼
content = soup.prettify()
print(content)
執行結果
BeautifulSoup 四大物件
- 1.Tag
- 2.NavigableString
- 3.BeautifulSoup
- 4.Comment
(1)Tag
- 對應HTML中的標籤
- 可以通過soup.tag_name(例如:soup.head;soup.link )
- tag 的屬性:
- name :例:soup.meta.name(對應下面案例程式碼)
- attrs :例:soup.meta.attrs
- attrs['屬性名']:例:soup.meta.attrs['content']
- 案例程式碼27bs2.py檔案:https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py27bs2.py
# BeautifulSoup 的使用案例
from urllib import request
from bs4 import BeautifulSoup
url = 'http://www.baidu.com/'
rsp = request.urlopen(url)
content = rsp.read()
soup = BeautifulSoup(content, 'lxml')
# bs 自動解碼
content = soup.prettify()
# 雖然原文中有多個 meta 但是使用 soup.meta 只會列印出以第一個
print("soup.meta:\n", soup.meta)
print("=="*12)
print("soup.meta.name:\n",soup.meta.name)
print("=="*12)
print("soup.meta.attrs:\n",soup.meta.attrs)
print("=="*12)
print("soup.meta.attrs['content']:\n",soup.meta.attrs['content'])
# 當然我們也可以對獲取到的資料進行修改
soup.meta.attrs['content'] = 'hahahahaha'
print("=="*5, "修改後","=="*5)
print("soup.meta.attrs['content']:\n",soup.meta.attrs['content'])
執行結果
這裡結果我們看到,只有一個 meta 標籤,而源文件有多個,不是出錯,而是這裡使用 soup.meta 這種方式,只會列印出以第一個,也就是說資料提取時,1次匹配成功即退出
怎樣列印多個 meta 標籤呢?使用遍歷的方式,具體程式碼寫在下一篇
(2)NavigableString
- 對應內容值
(3)BeautifulSoup
- 表示的是一個文件的內容,大部分可以把它當做 tag 物件
- 不常用
(4)Comment
- 特殊型別的 NavigableString 物件
- 對其輸出,則內容不包括註釋符號
本篇就介紹到這裡了,剩下的寫在下一篇
拜拜
- 本筆記不允許任何個人和組織轉載