摘要:官方解釋如下提供一些簡單的式的函數(shù)用來處理導航搜索修改分析樹等功能。廢話不多說,我們來試一下吧安裝目前已經(jīng)停止開發(fā),推薦在現(xiàn)在的項目中使用,不過它已經(jīng)被移植到了,也就是說導入時我們需要。
1. Beautiful Soup的簡介上一節(jié)我們介紹了正則表達式,它的內(nèi)容其實還是蠻多的,如果一個正則匹配稍有差池,那可能程序就處在永久的循環(huán)之中,而且有的小伙伴們也對寫正則表達式的寫法用得不熟練,沒關系,我們還有一個更強大的工具,叫Beautiful Soup,有了它我們可以很方便地提取出HTML或XML標簽中的內(nèi)容,實在是方便,這一節(jié)就讓我們一起來感受一下Beautiful Soup的強大吧。
簡單來說,Beautiful Soup是python的一個庫,最主要的功能是從網(wǎng)頁抓取數(shù)據(jù)。官方解釋如下:
Beautiful Soup提供一些簡單的、python式的函數(shù)用來處理導航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數(shù)據(jù),因為簡單,所以不需要多少代碼就可以寫出一個完整的應用程序。
Beautiful Soup自動將輸入文檔轉換為Unicode編碼,輸出文檔轉換為utf-8編碼。你不需要考慮編碼方式,除非文檔沒有指定一個編碼方式,這時,Beautiful Soup就不能自動識別編碼方式了。然后,你僅僅需要說明一下原始編碼方式就可以了。
Beautiful Soup已成為和lxml、html6lib一樣出色的python解釋器,為用戶靈活地提供不同的解析策略或強勁的速度。
廢話不多說,我們來試一下吧~
Beautiful Soup 3 目前已經(jīng)停止開發(fā),推薦在現(xiàn)在的項目中使用Beautiful Soup 4,不過它已經(jīng)被移植到BS4了,也就是說導入時我們需要 import bs4 。所以這里我們用的版本是 Beautiful Soup 4.3.2 (簡稱BS4),另外據(jù)說 BS4 對 Python3 的支持不夠好,不過我用的是 Python2.7.7,如果有小伙伴用的是 Python3 版本,可以考慮下載 BS3 版本。
可以利用 pip 或者 easy_install 來安裝,以下兩種方法均可
easy_install beautifulsoup4
pip install beautifulsoup4
如果想安裝最新的版本,請直接下載安裝包來手動安裝,也是十分方便的方法。在這里我安裝的是 Beautiful Soup 4.3.2
下載完成之后解壓
運行下面的命令即可完成安裝
sudo python setup.py install
然后需要安裝 lxml
easy_install lxml
pip install lxml
另一個可供選擇的解析器是純Python實現(xiàn)的 html5lib , html5lib的解析方式與瀏覽器相同,可以選擇下列方法來安裝html5lib:
easy_install html5lib
pip install html5lib
Beautiful Soup支持Python標準庫中的HTML解析器,還支持一些第三方的解析器,如果我們不安裝它,則 Python 會使用 Python默認的解析器,lxml 解析器更加強大,速度更快,推薦安裝。
3. 開啟Beautiful Soup 之旅在這里先分享官方文檔鏈接,不過內(nèi)容是有些多,也不夠條理,在此本文章做一下整理方便大家參考。
4. 創(chuàng)建 Beautiful Soup 對象首先必須要導入 bs4 庫
from bs4 import BeautifulSoup
我們創(chuàng)建一個字符串,后面的例子我們便會用它來演示
html = """5. 小試牛刀 爬豆瓣的前250熱門電影數(shù)據(jù)The Dormouse"s story The Dormouse"s story
Once upon a time there were three little sisters; and their names were , Lacie and Tillie; and they lived at the bottom of a well.
...
"""
在使用該腳本時,需要安裝下面用到的庫先,如這樣:
easy_install requests easy_install codecs easy_install bs4 easy_install openpyxl
腳本文件
#!/usr/bin/env python # encoding=utf-8 import requests,re import codecs from bs4 import BeautifulSoup from openpyxl import Workbook wb = Workbook() dest_filename = "電影.xlsx" ws1 = wb.active ws1.title = "電影top250" DOWNLOAD_URL = "http://movie.douban.com/top250/" def download_page(url): """獲取url地址頁面內(nèi)容""" headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36" } data = requests.get(url, headers=headers).content return data def get_li(doc): soup = BeautifulSoup(doc, "html.parser") ol = soup.find("ol", class_="grid_view") name = [] #名字 star_con = [] #評價人數(shù) score = [] #評分 info_list = [] #短評 for i in ol.find_all("li"): detail = i.find("div", attrs={"class": "hd"}) movie_name = detail.find("span", attrs={"class": "title"}).get_text() #電影名字 level_star = i.find("span",attrs={"class":"rating_num"}).get_text() #評分 star = i.find("div",attrs={"class":"star"}) star_num = star.find(text=re.compile("評價")) #評價 info = i.find("span",attrs={"class":"inq"}) #短評 if info: #判斷是否有短評 info_list.append(info.get_text()) else: info_list.append("無") score.append(level_star) name.append(movie_name) star_con.append(star_num) page = soup.find("span", attrs={"class": "next"}).find("a") #獲取下一頁 if page: return name,star_con,score,info_list,DOWNLOAD_URL + page["href"] return name,star_con,score,info_list,None def main(): url = DOWNLOAD_URL name = [] star_con=[] score = [] info = [] while url: doc = download_page(url) movie,star,level_num,info_list,url = get_li(doc) name = name + movie star_con = star_con + star score = score+level_num info = info+ info_list for (i,m,o,p) in zip(name,star_con,score,info): col_A = "A%s"%(name.index(i)+1) col_B = "B%s"%(name.index(i)+1) col_C = "C%s"%(name.index(i)+1) col_D = "D%s"%(name.index(i)+1) ws1[col_A]=i ws1[col_B] = m ws1[col_C] = o ws1[col_D] = p wb.save(filename=dest_filename) if __name__ == "__main__": main()6. pip和easy_install區(qū)別
pip和easy_install安裝命令有什么區(qū)別?
請看該博文:Python 包管理工具解惑
參考博文:
Beautiful Soup用法
Python 爬蟲-模擬登錄知乎-爬取拉勾網(wǎng)職位信息
Python 包管理工具解惑
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38032.html
摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術服務,現(xiàn)整理出零基礎如何學爬蟲技術以供學習,。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務,服務范圍涵蓋社交網(wǎng)絡電子商務分類信息學術研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術服務,現(xiàn)整理出零基礎如何學爬蟲技術以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...
摘要:前面兩篇介紹的是的基本對象類型和文檔樹的遍歷本篇介紹的文檔搜索搜索文檔樹主要使用兩個方法和是用于搜索節(jié)點中所有符合過濾條件的節(jié)點那么它支持哪些過濾器呢過濾器的類型字符串正則表達式列表方法字符串查找文檔中所有的標簽正則表達式找出所有以開頭的標 前面兩篇介紹的是 Beautiful Soup 4 的基本對象類型和文檔樹的遍歷, 本篇介紹 Beautiful Soup 4 的文檔搜索 搜索文...
摘要:以下這些項目,你拿來學習學習練練手。當你每個步驟都能做到很優(yōu)秀的時候,你應該考慮如何組合這四個步驟,使你的爬蟲達到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學習不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設計方案,比如說。 (一)如何學習Python 學習Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結構、語法...
摘要:本次介紹使用對文檔樹的遍歷。要注意的點在這里沒有屬性,因為它是同級節(jié)點中的第一個。字符串不是兄弟節(jié)點因為它們的父節(jié)點不同。和通過和的迭代器可以向前或向后訪問文檔的解析內(nèi)容。 上一篇文章介紹了 BeautifulSoup 的安裝以及基本對象類型。 本次介紹使用 bs4 對 HTML 文檔樹的遍歷。 先把本文用到的例子貼上: str = bs4 test bs4 test ...
摘要:如果一個僅有一個子節(jié)點那么這個也可以使用方法輸出結果與當前唯一子節(jié)點的結果相同。如果標簽里面只有唯一的一個標簽了,那么也會返回最里面的內(nèi)容。 文章來源[Python爬蟲利器二之Beautiful Soup的用法 | 靜覓](http://cuiqingcai.com/1319.html Beautiful Soup的用法 創(chuàng)建 Beautiful Soup 對象 首先必須要導入 bs4...
閱讀 3054·2023-04-26 00:40
閱讀 2391·2021-09-27 13:47
閱讀 4197·2021-09-07 10:22
閱讀 2966·2021-09-06 15:02
閱讀 3307·2021-09-04 16:45
閱讀 2484·2021-08-11 10:23
閱讀 3599·2021-07-26 23:38
閱讀 2900·2019-08-30 15:54