• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            書評網

            更新時間:2023-03-01 22:19:10 閱讀: 評論:0

            我有一個愿望-酸式鹽有哪些

            書評網
            2023年2月27日發(作者:哈密瓜怎么選)

            ?python爬取?瓣某本書的前n條書評并計算評分(star)的平

            均值

            這個爬??項?是中國?學MOOC的“”課程的?個課后作業,由南京?學張莉?師主講,有興趣的同學可以看?看。

            雖然?師已經給出了參考代碼,但由于?瓣讀書?站已經改版,參考代碼中的爬取?法已經不可?,所以我將源代碼稍作修改,并使之模塊

            化,增強代碼的可復?性。

            爬取思路如下:

            ?先我們打開的任何?本書的書評頁,這?以《Python編程從?門到實踐(第2版)》為例。

            在頁?空?處右擊?標選擇“檢查”查看?頁的HTML代碼(我?的是Edge瀏覽器,其他瀏覽器的操作?法也應該相似),點擊左上?的

            箭頭按鈕,可以查看頁?中模塊對應的代碼位置,如下圖所?:

            我們可以看到,每?條書評都放在?個列表模塊

          2. 中,書評的內容嵌套在模塊中,class屬性是“short”,相應的,評分(star)

          3. 也放在模塊中,class屬性是“ur-starsallstar40rating”,其中的數字40即表?評分,?顆星表?10分,四顆星就是40分。

            如下圖:

            爬取思路是?Python的requests庫獲取?頁的HTML,再通過BeautifulSoup庫解析HTML獲取相應的書評和評分信息。

            我們再來看看書評頁?的具體信息,發現每頁只能顯?20條書評,那如果我們想爬取多于20條的書評,是不是要通過爬取?個頁?換?個

            URL的“笨?法”呢?其實也不?,通過觀察?頁的URL可以發現,每個頁?的URL只有"start="后?的數字不同,這個數字是控制頁?從

            第?條書評開始顯?,第?頁就是從第0條書評開始,第?頁就是從第20條開始,我們可以把這個數字改成其他值,相應的頁?就會從那?

            條書評開始顯?。

            我們可以發現URL中還有?個參數limit,表?每?頁顯?的書評數,那我們可不可以把這個參數改成我們想要爬取的書評數?呢,這樣我

            們就能在?個頁?中完成爬取,但很可惜,試了?下發現不?,?論怎么改還是只能顯?20條書評。

            但既然每個頁?的URL只有start的參數不同,我們就可以通過?個while循環(python的for循環好像只能?來遍歷?個迭代器)來爬取多

            個頁?。

            為了代碼的可復?性,我把這個項?分成信息獲取和結果展?兩個模塊,分別定義兩個函數getInfo(url,n)和showRst(),函數getInfo中

            的兩個參數表?要爬取的書評?頁的URL和書評的數量。

            下?是具體的代碼:

            #-*-coding:utf-8-*-

            """

            CreatedonThuAug1217:43:452021

            @discribe:douban_comments_spider

            @author:86150

            """

            #定義爬取信息的函數,其中參數url是爬取書評?頁的地址,n是爬取書評的數量

            defgetInfo(url,n):

            #導?要?到的第三?庫

            importrequests

            frombs4importBeautifulSoup

            importre

            importtime

            count=0#?于記錄書評數量的計數器

            i=0#?于控制翻頁的計數器

            lis_comments=[]#?于存放書評內容的列表

            lis_stars=[]#?于存放評分的列表

            header={'Ur-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/91.0.4472.124Safari/537.36'}

            #?于向服務器發送請求的頭部信息

            whilecount

            url_n=('?')[0]+'?start='+str(i)+('?')[1]#調?字符串的split()?法,以'?'為分隔符將URL分成兩個字符串,中間加?'?start='+str(i)字符串組成新的U

            r=(url_n,headers=header)#調?requests的get()?法獲取頁?信息

            soup=BeautifulSoup(,'lxml')#以'xml'格式解析

            comments=_all('span','short')#調?soup對象的find_all?法獲取具有“short”屬性的所有span標簽

            pattern=e('

            p=l(pattern,)#調?re的findall?法匹配HTML中的所有評分分數(star)

            foritemincomments:

            lis_()#調?append?法將每?條書評添加到列表中

            forstarinp:

            lis_(int(star))#調?append?法將每?條評分添加到列表中

            count=len(lis_comments)#獲取列表中的書評數?

            i+=20#star數加上20,爬取下?個頁?

            (3)#根據?瓣?的robot協議,每訪問?個頁?停留3秒鐘,以免被當作惡意爬?

            returnlis_comments,lis_stars#返回書評和評分列表,便于被后?的函數調?

            #定義顯?結果的函數,其中參數num是想要顯?的書評數量

            defshowRst(num):

            c,s=getInfo(url,n)#獲取getInfo函數的返回值

            print("前%d條書評如下:"%n)

            foriinrange(num):

            print(i+1,c[i])#打印出每?條書評及其序號

            print('--------------------------------------------------------------')

            print("前%d條評分的平均值為:"%len(s),sum(s)/len(s))#調?python的內部函數len()和sum(),計算評分的平均值

            if__name__=="__main__":#程序的??

            url='/subject/35196328/comments/?&limit=20&status=P&sort=new_score'

            n=100

            num=80

            getInfo(url,n)#調?getInfo函數獲取前n條書評和評分,因為有些書評可能沒有評分,所以評分數可能少于書評數

            showRst(num)#showRst函數顯?前num條書評和評分的平均值

            代碼中?到正則表達式來匹配字符串,下?是常?的正則表達式:

            爬取結果如下:

            Lifeisshort,IuPython.

            本文發布于:2023-02-27 22:15:51,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/1677507351121.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:書評網.doc

            本文 PDF 下載地址:書評網.pdf

            上一篇:班級寄語
            下一篇:下周工作計劃
            標簽:書評網
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 成人午夜在线观看日韩| 国产一区二区三区小说| 开心五月婷婷综合网站| 国产主播一区二区三区| 边做边爱免费视频| 国语精品一区二区三区| 天堂网av最新版在线看| 国产高清自产拍AV在线| 国产精品天堂蜜av在线播放| 成人欧美一区二区三区在线观看 | 亚洲色大成网站www看下面| 四川丰满少妇无套内谢| 日日噜噜夜夜狠狠久久无码区| 亚洲欧洲av一区二区久久| 久久精品一区二区东京热| 无码一区二区波多野结衣播放搜索| 成人国产永久福利看片| 鲁鲁网亚洲站内射污| 日韩精品国产另类专区| 无码区日韩专区免费系列| 亚洲日韩中文字幕在线播放| 宅男噜噜噜66在线观看| 国产精品久久久午夜夜伦鲁鲁| 在线中文字幕人妻视频| 久久永久视频| 被拉到野外强要好爽| 亚洲精品成人A在线观看| 亚洲精品欧美综合四区| 国产二区三区不卡免费| 精品国产乱码久久久久APP下载| 中文字幕va一区二区三区| 又色又爽又黄的视频网站| 亚洲国产一线二线三线| 人妻丰满熟妇av无码区| 亚洲av永久无码精品天堂久久| 日韩免费视频一一二区| 亚洲最大成人免费av| 亚洲无线码一区二区三区| 大地资源免费视频观看| 9久久伊人精品综合| 伊人久久精品亚洲午夜|