Python爬蟲包BeautifulSoup簡(jiǎn)介與安裝(一)
先發(fā)官方文檔的地址:官方文檔
學(xué)習(xí)使用的書籍是Python網(wǎng)絡(luò)數(shù)據(jù)采集(Ryan Mitchell著),大約是一些筆記的整理。
Beautiful Soup的簡(jiǎn)介
簡(jiǎn)單來說,Beautiful Soup是python的一個(gè)庫(kù),最主要的功能是從網(wǎng)頁(yè)抓取數(shù)據(jù)。官方解釋如下:
Beautiful Soup提供一些簡(jiǎn)單的、python式的函數(shù)用來處理導(dǎo)航、搜索、修改分析樹等功能。它是一個(gè)工具箱,通過解析文檔為用戶提供需要抓取的數(shù)據(jù),因?yàn)楹?jiǎn)單,所以不需要多少代碼就可以寫出一個(gè)完整的應(yīng)用程序。
Beautiful Soup自動(dòng)將輸入文檔轉(zhuǎn)換為Unicode編碼,輸出文檔轉(zhuǎn)換為utf-8編碼。你不需要考慮編碼方式,除非文檔沒有指定一個(gè)編碼方式,這時(shí),Beautiful Soup就不能自動(dòng)識(shí)別編碼方式了。然后,你僅僅需要說明一下原始編碼方式就可以了。
Beautiful Soup已成為和lxml、html6lib一樣出色的python解釋器,為用戶靈活地提供不同的解析策略或強(qiáng)勁的速度。
安裝
Beautiful Soup 3 目前已經(jīng)停止開發(fā),推薦在現(xiàn)在的項(xiàng)目中使用Beautiful Soup 4,不過它已經(jīng)被移植到BS4了,也就是說導(dǎo)入時(shí)我們需要 import bs4 。所以這里我們用的版本是 Beautiful Soup 4.3.2 (簡(jiǎn)稱BS4)。
書本中的源代碼用的是Python3,但是據(jù)說 BS4 對(duì) Python3 的支持不夠好,所以我用的是 Python2.7。源碼中也會(huì)相應(yīng)地調(diào)整一些包的引入。
因?yàn)橹皩戇^CNN等,需要在windows下配置環(huán)境,所以已經(jīng)安裝了anaconda。如果安裝了anaconda的讀者,可以直接使用pip安裝,conda需要搜索一下,直接安裝時(shí)不行的。
anaconda search -t conda beautifulsoup conda install beautifulsoup4 pip install beautifulsoup4
如果想安裝最新的版本,請(qǐng)直接下載安裝包來手動(dòng)安裝,也是十分方便的方法。在這里我安裝的是 beautifulsoup4 (4.5.1)
下載完成之后解壓
運(yùn)行下面的命令即可完成安裝
sudo python setup.py install
有時(shí)候的安裝方式會(huì)需手動(dòng)安裝 lxml,如果用conda安裝會(huì)自動(dòng)把依賴包給安裝上。
pip install lxml
創(chuàng)建 Beautiful Soup 對(duì)象
首先導(dǎo)入bs4庫(kù)
from bs4 import BeautifulSoup
用urlopen讀取一段HTML的內(nèi)容
import sys if sys.version_info[0] == 2: from urllib2 import urlopen # Python 2 else: from urllib.request import urlopen # Python3 html = urlopen(http://www.pythonscraping.com/exercises/exercise1.html)
用讀取的內(nèi)容創(chuàng)建beautifulsoup 對(duì)象
bsObj = BeautifulSoup(html.read()) print(bsObj.h1)
此外我們也可以用本地的HTML文件來創(chuàng)建對(duì)象,例如
soup = BeautifulSoup(open('index.html'))
輸出測(cè)試
print bsObj.h1 print bsObj.prettify()
<h1>An Interesting Title</h1>
<html> <head> <title> A Useful Page </title> </head> <body> <h1> An Interesting Title </h1> <div> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </div> </body> </html>
以上便是輸出結(jié)果,格式化打印出了它的內(nèi)容,并且可以通過成員對(duì)象的方式獲得解析后的HTML層次。
以上全部為本篇文章的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PyTorch線性回歸和邏輯回歸實(shí)戰(zhàn)示例
這篇文章主要介紹了PyTorch線性回歸和邏輯回歸實(shí)戰(zhàn)示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05使用python下載大型文件顯示進(jìn)度條和下載時(shí)間的操作代碼
大家都知道下載大型文件時(shí)存在一個(gè)問題,那就是內(nèi)存使用量迅速上升,可能會(huì)造成電腦卡死,所以我們需要換一個(gè)方式進(jìn)行下載,這篇文章主要介紹了使用python下載大型文件的方法顯示進(jìn)度條和下載時(shí)間,需要的朋友可以參考下2022-11-11Python制作一個(gè)隨機(jī)抽獎(jiǎng)小工具的實(shí)現(xiàn)
最近在工作中面向社群玩家組織了一場(chǎng)活動(dòng),需要進(jìn)行隨機(jī)抽獎(jiǎng),就做了一個(gè)簡(jiǎn)單的隨機(jī)抽獎(jiǎng)小工具。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07python實(shí)現(xiàn)在列表中查找某個(gè)元素的下標(biāo)示例
這篇文章主要介紹了python實(shí)現(xiàn)在列表中查找某個(gè)元素的下標(biāo)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別功能的代碼
這篇文章主要介紹了Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07pandas DataFrame行或列的刪除方法的實(shí)現(xiàn)示例
這篇文章主要介紹了pandas DataFrame行或列的刪除方法的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Python數(shù)據(jù)可視化之Matplotlib和Seaborn的使用教程詳解
這篇文章主要為大家詳細(xì)介紹了Python數(shù)據(jù)可視化中Matplotlib和Seaborn使用的相關(guān)教程,文中的示例代碼講解詳細(xì),有需要的可以參考下2024-03-03django 框架實(shí)現(xiàn)的用戶注冊(cè)、登錄、退出功能示例
這篇文章主要介紹了django 框架實(shí)現(xiàn)的用戶注冊(cè)、登錄、退出功能,結(jié)合實(shí)例形式詳細(xì)分析了Django框架用戶注冊(cè)、登陸、退出等功能具體實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2019-11-11