亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Python爬蟲利器二之Beautiful Soup的用法

cjie / 1514人閱讀

摘要:官方解釋如下提供一些簡(jiǎn)單的式的函數(shù)用來處理導(dǎo)航搜索修改分析樹等功能。廢話不多說,我們來試一下吧安裝目前已經(jīng)停止開發(fā),推薦在現(xiàn)在的項(xiàng)目中使用,不過它已經(jīng)被移植到了,也就是說導(dǎo)入時(shí)我們需要。

上一節(jié)我們介紹了正則表達(dá)式,它的內(nèi)容其實(shí)還是蠻多的,如果一個(gè)正則匹配稍有差池,那可能程序就處在永久的循環(huán)之中,而且有的小伙伴們也對(duì)寫正則表達(dá)式的寫法用得不熟練,沒關(guān)系,我們還有一個(gè)更強(qiáng)大的工具,叫Beautiful Soup,有了它我們可以很方便地提取出HTML或XML標(biāo)簽中的內(nèi)容,實(shí)在是方便,這一節(jié)就讓我們一起來感受一下Beautiful Soup的強(qiáng)大吧。

1. 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)勁的速度。
廢話不多說,我們來試一下吧~

2. Beautiful Soup 安裝

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),另外據(jù)說 BS4 對(duì) Python3 的支持不夠好,不過我用的是 Python2.7.7,如果有小伙伴用的是 Python3 版本,可以考慮下載 BS3 版本。

可以利用 pip 或者 easy_install 來安裝,以下兩種方法均可

easy_install beautifulsoup4
pip install beautifulsoup4

如果想安裝最新的版本,請(qǐng)直接下載安裝包來手動(dòng)安裝,也是十分方便的方法。在這里我安裝的是 Beautiful Soup 4.3.2

下載完成之后解壓

運(yùn)行下面的命令即可完成安裝

sudo python setup.py install

然后需要安裝 lxml

easy_install lxml
pip install lxml

另一個(gè)可供選擇的解析器是純Python實(shí)現(xiàn)的 html5lib , html5lib的解析方式與瀏覽器相同,可以選擇下列方法來安裝html5lib:

easy_install html5lib
pip install html5lib

Beautiful Soup支持Python標(biāo)準(zhǔn)庫(kù)中的HTML解析器,還支持一些第三方的解析器,如果我們不安裝它,則 Python 會(huì)使用 Python默認(rèn)的解析器,lxml 解析器更加強(qiáng)大,速度更快,推薦安裝。

3. 開啟Beautiful Soup 之旅

在這里先分享官方文檔鏈接,不過內(nèi)容是有些多,也不夠條理,在此本文章做一下整理方便大家參考。

4. 創(chuàng)建 Beautiful Soup 對(duì)象

首先必須要導(dǎo)入 bs4 庫(kù)

from bs4 import BeautifulSoup

我們創(chuàng)建一個(gè)字符串,后面的例子我們便會(huì)用它來演示

html = """
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.

...

"""
5. 小試牛刀 爬豆瓣的前250熱門電影數(shù)據(jù)

在使用該腳本時(shí),需要安裝下面用到的庫(kù)先,如這樣:

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地址頁(yè)面內(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 = [] #評(píng)價(jià)人數(shù)
    score = []  #評(píng)分
    info_list = []  #短評(píng)
    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() #評(píng)分
        star = i.find("div",attrs={"class":"star"})
        star_num = star.find(text=re.compile("評(píng)價(jià)"))  #評(píng)價(jià)

        info = i.find("span",attrs={"class":"inq"})  #短評(píng)
        if info:     #判斷是否有短評(píng)
            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") #獲取下一頁(yè)
    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ū)別?
請(qǐng)看該博文:Python 包管理工具解惑

參考博文:
Beautiful Soup用法
Python 爬蟲-模擬登錄知乎-爬取拉勾網(wǎng)職位信息
Python 包管理工具解惑

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/38032.html

相關(guān)文章

  • 零基礎(chǔ)如何學(xué)爬蟲技術(shù)

    摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲學(xué)習(xí)系列教程(來源于某博主:htt...

    KunMinX 評(píng)論0 收藏0
  • Python 爬蟲利器 Beautiful Soup 4 之文檔樹搜索

    摘要:前面兩篇介紹的是的基本對(duì)象類型和文檔樹的遍歷本篇介紹的文檔搜索搜索文檔樹主要使用兩個(gè)方法和是用于搜索節(jié)點(diǎn)中所有符合過濾條件的節(jié)點(diǎn)那么它支持哪些過濾器呢過濾器的類型字符串正則表達(dá)式列表方法字符串查找文檔中所有的標(biāo)簽正則表達(dá)式找出所有以開頭的標(biāo) 前面兩篇介紹的是 Beautiful Soup 4 的基本對(duì)象類型和文檔樹的遍歷, 本篇介紹 Beautiful Soup 4 的文檔搜索 搜索文...

    darryrzhong 評(píng)論0 收藏0
  • Python爬蟲學(xué)習(xí)路線

    摘要:以下這些項(xiàng)目,你拿來學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個(gè)步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個(gè)步驟,使你的爬蟲達(dá)到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計(jì)方案,比如說。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個(gè)階段: 1.剛上手的時(shí)候肯定是先過一遍Python最基本的知識(shí),比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...

    liaoyg8023 評(píng)論0 收藏0
  • Python爬蟲利器Beautiful Soup使用(二)

    摘要:本次介紹使用對(duì)文檔樹的遍歷。要注意的點(diǎn)在這里沒有屬性,因?yàn)樗峭?jí)節(jié)點(diǎn)中的第一個(gè)。字符串不是兄弟節(jié)點(diǎn)因?yàn)樗鼈兊母腹?jié)點(diǎn)不同。和通過和的迭代器可以向前或向后訪問文檔的解析內(nèi)容。 上一篇文章介紹了 BeautifulSoup 的安裝以及基本對(duì)象類型。 本次介紹使用 bs4 對(duì) HTML 文檔樹的遍歷。 先把本文用到的例子貼上: str = bs4 test bs4 test ...

    王笑朝 評(píng)論0 收藏0
  • Beautiful Soup用法

    摘要:如果一個(gè)僅有一個(gè)子節(jié)點(diǎn)那么這個(gè)也可以使用方法輸出結(jié)果與當(dāng)前唯一子節(jié)點(diǎn)的結(jié)果相同。如果標(biāo)簽里面只有唯一的一個(gè)標(biāo)簽了,那么也會(huì)返回最里面的內(nèi)容。 文章來源[Python爬蟲利器二之Beautiful Soup的用法 | 靜覓](http://cuiqingcai.com/1319.html Beautiful Soup的用法 創(chuàng)建 Beautiful Soup 對(duì)象 首先必須要導(dǎo)入 bs4...

    wanghui 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<