關於爬蟲,你需要知道的BeautifulSoup(一)

日拱一卒|數據挖掘014

本篇推送涉及的代碼鏈接:

數據爬下來,大部分情況是 HTML 文本,也有少數是基於 XML 格式或者 Json 格式的數據,要想正確處理這些數據,你要熟悉每種數據類型的解決方案,比如 JSON 數據可以直接使用 Python自帶的模塊 json,對於 HTML 數據,可以使用 BeautifulSoup、lxml 等庫去處理,對於 xml 數據,除了可以使用 untangle、xmltodict 等第三方庫(Python之禪劉志軍)。

Beautiful Soup 是一個可以從HTML或XML文件中提取數據的Python庫,通過 BeautifulSoup,只需要用很少的代碼就可以提取出 HTML 中任何感興趣的內容,此外,它還有一定的 HTML 容錯能力,對於一個格式不完整的HTML 文檔,它也可以正確處理。

Beautiful Soup官方文檔

一、安裝

首先pip install beautifulsoup4安裝requests庫

接下來導入beautifulsoup4並做個小測試


二、使用BeautifulSoup

僅用兩行代碼就可以使用BeautifulSoup

from bs4 import BeautifulSoup
soup = BeautifulSoup('<p>data</p>', 'html.parser')

構建一個 BeautifulSoup 對象需要兩個參數:

  • <p>data</p> 解析的 HTML 文本字符串
  • html.parser 告訴 BeautifulSoup 使用哪個解析器來解析 HTML

Beautiful Soup庫,也叫beautifulsoup4 或 bs4,約定引用方式如下,即主要是用BeautifulSoup類

from bs4 import BeautifulSoupimport bs4

HTML 標籤

在詳細介紹BeautifulSoup之前,我們先來看看有關HTML標籤的知識

HTML 是一個樹形組織結構

Beautiful Soup庫是解析、遍歷、維護“標籤樹”的功能庫

  • 它由很多標籤(Tag)組成,比如 html、head、title等等都是標籤
  • 一個標籤對構成一個節點,比如 <html>...</html>是一個根節點
  • 節點之間存在某種關係,比如 h1 和 p 互爲鄰居,他們是相鄰的兄弟(sibling)節點
  • h1 是 body 的直接子(children)節點,還是 html 的子孫(descendants)節點
  • body 是 p 的父(parent)節點,html 是 p 的祖輩(parents)節點
  • 嵌套在標籤之間的字符串是該節點下的一個特殊子節點,比如 “hello, world” 也是一個節點,只不過沒名字。

關於HTML更多可以看關於爬蟲,你需要知道的HTML知識

如上圖,標籤名稱爲p

HTML文檔,標籤樹,BeautifulSoup類三者是等價的,即BeautifulSoup對應一個HTML/XML文檔的全部內容

(一)基本元素

下面介紹BeautifulSoup類的基本元素:


1.Tag標籤

任何存在於HTML語法中的標籤都可以用soup.<tag>訪問獲得,如上是獲取a標籤的信息。當HTML文檔中存在多個相同<tag>對應內容時,soup.<tag>返回第一個。

2.Name 名字

每個<tag>都有自己的名字,通過<tag>.name獲取,字符串類型。

3.Attributes 屬性



一個<tag>可以有0或多個屬性,字典類型

4.NavigableString 標籤內非屬性字符串

NavigableString可以跨越多個層次

5.Comment 註釋

Comment是一種特殊類型

小結:五大類基本元素

下一篇推文將介紹基於bs4的HTML內容遍歷方法和搜索方法

參考資料:
1.Python爬蟲知識點梳理
2.HTML文本解析庫BeautifulSoup
3.Python網絡爬蟲與信息提取

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章