Python網頁抓取工具Beautiful Soup面面觀!
Beautiful Soup是python的一個庫,最主要的功能是從網頁抓取資料。提供一些簡單的、python式的函式,用來處理導航、搜尋、修改分析樹等功能。
Beautiful Soup是一個工具箱,通過解析文件為使用者提供需要抓取的資料。因為簡單,所以不需要多少程式碼,就可以寫出一個完整的應用程式。
Beautiful Soup自動將輸入文件轉換為Unicode編碼,輸出文件轉換為utf-8編碼。除非文件沒有指定一個編碼方式,這時Beautiful Soup就不能自動識別編碼方式了,但僅需要說明一下原始編碼方式就可以了。
Beautiful Soup已成為和lxml、html6lib一樣出色的python直譯器,為使用者靈活地提供不同的解析策略或強勁的速度。
Beautiful Soup 安裝
Beautiful Soup 3 目前已經停止開發,推薦在現在的專案中使用Beautiful Soup 4,不過它已經被移植到BS4了,也就是說匯入時需要import bs4 。如果你用的是新版的Debain或Ubuntu,那麼可以通過系統的軟體包管理來安裝。
Beautiful Soup支援Python標準庫中的HTML解析器,還支援一些第三方的解析器。如果不安裝它,則Python 會使用Python預設的解析器
建立Beautiful Soup 物件
首先必須要匯入bs4 庫
from bs4 import BeautifulSoup
先建立一個字串供使用
html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!--Elsie --></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
建立beautifulsoup物件
soup = BeautifulSoup(open('index.html'))
另外,還可以用本地HTML 檔案來建立物件,例如
print soup.prettify()
上面這句程式碼,便是將本地index.html 檔案開啟,用它來建立soup 物件
下面來列印一下soup 物件的內容,格式化輸出
print soup.prettify()
Beautiful Soup物件種類
Beautiful Soup將複雜HTML文件,轉換成一個複雜的樹形結構。
每個節點都是Python物件,所有物件可以歸納為4種:
(1)Tag
Tag 其實就是HTML 中的一個個標籤
例如
<title>The Dormouse's story</title>
<aclass="sister" href="http://example.com/elsie" id="link1">Elsie</a>
上面的title 、a 等等HTML 標籤加上裡面包括的內容就是Tag,用Beautiful Soup 來獲取Tags
print soup.title
print soup.head
print soup.a
print soup.p
print type(soup.a)
print soup.name
print soup.head.name
(2)NavigableString
如果已經得到了標籤的內容,要想獲取標籤內部的文字怎麼辦?
用.string 獲取內部文字
print soup.p.string
它的型別是一個NavigableString,其意思是可以遍歷的字串。
(3)BeautifulSoup
BeautifulSoup物件,表示的是一個文件的全部內容
很多時候可以把它當作一個特殊的Tag 物件
可以分別獲取它的型別,名稱,以及屬性
print type(soup.name)
print soup.name
print soup.attrs
(4)Comment
Comment物件是一特殊型別NavigableString物件,輸出的內容仍不包括註釋符號
如果它處理不好,可能會對文字處理造成意想不到的麻煩。
找一個帶註釋的標籤
print soup.a
print soup.a.string
print type(soup.a.string)
<a class="sister"href="http://example.com/elsie"id="link1"><!--Elsie--></a>
Elsie
<class'bs4.element.Comment'>
a 標籤裡的內容實際上是註釋,但是如果用.string 來輸出它的內容,會發現它已經把註釋符號去掉了,所以這可能會給帶來不必要的麻煩。
另外列印輸出它的型別,發現它是一個Comment 型別,在使用前最好做一下判斷
iftype(soup.a.string)==bs4.element.Comment:
print soup.a.string
Beautiful Soup是一個工具箱,通過解析文件為使用者提供需要抓取的資料。因為簡單,所以不需要多少程式碼,就可以寫出一個完整的應用程式。
Beautiful Soup自動將輸入文件轉換為Unicode編碼,輸出文件轉換為utf-8編碼。除非文件沒有指定一個編碼方式,這時Beautiful Soup就不能自動識別編碼方式了,但僅需要說明一下原始編碼方式就可以了。
Beautiful Soup已成為和lxml、html6lib一樣出色的python直譯器,為使用者靈活地提供不同的解析策略或強勁的速度。
Beautiful Soup 安裝
Beautiful Soup 3 目前已經停止開發,推薦在現在的專案中使用Beautiful Soup 4,不過它已經被移植到BS4了,也就是說匯入時需要import bs4 。如果你用的是新版的Debain或Ubuntu,那麼可以通過系統的軟體包管理來安裝。
Beautiful Soup支援Python標準庫中的HTML解析器,還支援一些第三方的解析器。如果不安裝它,則Python 會使用Python預設的解析器
建立Beautiful Soup 物件
首先必須要匯入bs4 庫
from bs4 import BeautifulSoup
先建立一個字串供使用
html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!--Elsie --></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
建立beautifulsoup物件
soup = BeautifulSoup(open('index.html'))
另外,還可以用本地HTML 檔案來建立物件,例如
print soup.prettify()
上面這句程式碼,便是將本地index.html 檔案開啟,用它來建立soup 物件
下面來列印一下soup 物件的內容,格式化輸出
print soup.prettify()
Beautiful Soup物件種類
Beautiful Soup將複雜HTML文件,轉換成一個複雜的樹形結構。
每個節點都是Python物件,所有物件可以歸納為4種:
(1)Tag
Tag 其實就是HTML 中的一個個標籤
例如
<title>The Dormouse's story</title>
<aclass="sister" href="http://example.com/elsie" id="link1">Elsie</a>
上面的title 、a 等等HTML 標籤加上裡面包括的內容就是Tag,用Beautiful Soup 來獲取Tags
print soup.title
print soup.head
print soup.a
print soup.p
print type(soup.a)
print soup.name
print soup.head.name
(2)NavigableString
如果已經得到了標籤的內容,要想獲取標籤內部的文字怎麼辦?
用.string 獲取內部文字
print soup.p.string
它的型別是一個NavigableString,其意思是可以遍歷的字串。
(3)BeautifulSoup
BeautifulSoup物件,表示的是一個文件的全部內容
很多時候可以把它當作一個特殊的Tag 物件
可以分別獲取它的型別,名稱,以及屬性
print type(soup.name)
print soup.name
print soup.attrs
(4)Comment
Comment物件是一特殊型別NavigableString物件,輸出的內容仍不包括註釋符號
如果它處理不好,可能會對文字處理造成意想不到的麻煩。
找一個帶註釋的標籤
print soup.a
print soup.a.string
print type(soup.a.string)
<a class="sister"href="http://example.com/elsie"id="link1"><!--Elsie--></a>
Elsie
<class'bs4.element.Comment'>
a 標籤裡的內容實際上是註釋,但是如果用.string 來輸出它的內容,會發現它已經把註釋符號去掉了,所以這可能會給帶來不必要的麻煩。
另外列印輸出它的型別,發現它是一個Comment 型別,在使用前最好做一下判斷
iftype(soup.a.string)==bs4.element.Comment:
print soup.a.string
相關文章
- 使用 Beautiful Soup 在 Python 中抓取網頁Python網頁
- Python Beautiful Soup簡介Python
- Beautiful Soup學習
- 一起學爬蟲——使用Beautiful Soup爬取網頁爬蟲網頁
- Python Beautiful Soup+requests實現爬蟲Python爬蟲
- Beautiful Soup 學習手冊
- Python爬蟲學習(11):Beautiful Soup的使用Python爬蟲
- python抓取網頁Python網頁
- 淺析Beautiful Soup庫和Lxml庫XML
- python爬蟲之Beautiful Soup基礎知識+例項Python爬蟲
- JB的Python之旅-爬蟲篇--urllib和Beautiful SoupPython爬蟲
- Beautiful Soup庫的使用(學習筆記)筆記
- wget 網頁爬蟲,網頁抓取工具wget網頁爬蟲
- Beautiful Soup在爬蟲中的基本使用語法爬蟲
- Redis面面觀Redis
- 網路安全立法各國面面觀
- 【Python3網路爬蟲開發實戰】4-解析庫的使用-2 使用Beautiful SoupPython爬蟲
- Python爬蟲使用代理proxy抓取網頁Python爬蟲網頁
- 程式語言面面觀
- Android Bitmap面面觀Android
- Linux面面觀 (轉)Linux
- LLM面面觀之MoE
- 凶猛的網頁內容抓取規則配置工具網頁
- 如何抓取網頁資訊?網頁
- Perl 6 網頁抓取網頁
- 如何用Python爬資料?(一)網頁抓取Python網頁
- python3抓取網頁解碼問題!Python網頁
- 目標檢測面面觀
- 加密技術面面觀 (轉)加密
- 炒股軟體面面觀 (轉)
- python抓取網頁中圖片並儲存到本地Python網頁
- 騰牛網抓取(單頁)
- 面面俱到!網頁開發者必備的20款線上實用工具網頁
- 爬取網頁後的抓取資料_3種抓取網頁資料方法網頁
- 網頁資料抓取之噹噹網網頁
- 網頁資料抓取工具,webscraper 最簡單的資料抓取教程,人人都用得上網頁Web
- 佈局管理器面面觀
- PHP應用提速面面觀(轉)PHP