Python爬蟲教程-23-數據提取-BeautifulSoup4(一)


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就不能自動識別編碼方式了。然后,你僅僅需要說明一下原始編碼方式就可以了

常用數據提取工具的比較

BeautifulSoup4 的安裝

  • 【PyCharm】>【file】>【settings】>【Project Interpreter】>【+】 >【BeautifulSoup4】>【install】
  • 具體操作截圖:
    這里寫圖片描述這里寫圖片描述這里寫圖片描述

BeautifulSoup 的簡單使用案例

# 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爬蟲/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 對象
  • 對其輸出,則內容不包括注釋符號

本篇就介紹到這里了,剩下的寫在下一篇
拜拜


- 本筆記不允許任何個人和組織轉載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM