導航:首頁 > 電影題材 > 對豆瓣電影的python分析

對豆瓣電影的python分析

發布時間:2023-05-16 13:26:08

① .利用python獲得豆瓣電影前30部電影的中文片名,排名,導演,主演,上映時間

熱門頻道

首頁

博客

研修院

VIP

APP

問答

下載

社區

推薦頻道

活動

招聘

專題

打開CSDN APP
Copyright © 1999-2020, CSDN.NET, All Rights Reserved

打開APP

python 網路爬蟲 1.2 獲取豆瓣TOP250電影的中英文名、港台名、導演、上映年份、電影分類以及評分,將數據存入文檔。 原創
2021-07-19 01:03:15
2點贊

zynaln

碼齡8年

關注
題目:
獲取豆瓣TOP250電影的中英文名、港台名、導演、上映年份、電影分類以及評分,將數據存入文檔。
代碼:

輸出結果:

文章知識點與官方知識檔案匹配
Python入門技能樹網路爬蟲urllib
201761 人正在系統學習中
打開CSDN APP,看更多技術內容

最新發布 用python爬取豆瓣影評及影片信息(評論時間、用戶ID、評論內容)
用python爬取豆瓣影評及影片信息(評論時間、用戶ID、評論內容)
繼續訪問

python
寫評論

7

14

2



分享

② 豆瓣讀書數據分析-python

豆瓣讀書數據分析-python

(思路來自課程老師綠樹)剛剛學完python數據分析的課程,決定做一個有關python數據分析的小項目,思來想去,還是決定分析豆瓣的數據,因為豆瓣是python寫成的。用python爬蟲抓取數據較為方便,比一般網站少很多頁面bug問題,而且豆瓣上的數據量大概在million這個量級,算是算太大的,但也不小。正好手裡有一份跑出的大概300多萬的數據,直接開始分析。

首先導入數據,將數據賦給一個dataframe,取名為douban

douban=pd.read_table("douban.dat",sep="::",names=["user","book","rate"])

看一下這個數據的描述 

總共3648104行,其他的諸如平均數,中位數的值,是豆瓣書籍的鏈接後綴,並無實際意義。

然後關於豆瓣讀書用戶

user_count=douban.groupby('user').count()

user_count=user_count.sort('book',ascending=False)

、我們發現共有38萬多讀者,計數最多的一位eastwolf東狼,真的很厲害,一共寫了4000多的書評。不過我們不排除這是個機器人或者公眾號,因為4000度書評,就算一天看一本書,也要寫11年,而豆瓣創建才不過11年。有點假,不過這個問題我們暫且不談,僅從數據來看,第一名最愛讀書的書霸,就是eastwolf了,大家鼓掌。

然後我們再來看一下書籍的信息

看一下描述

最受歡迎的書有2071個書評,平均每本書大概有45個書評。

看一下具體情況

我們挑出書評最多的10本,找到圖片,就是以下這10本書

可以發現由於不同出版社不同翻譯的問題,10本書實際是4本,豆瓣果然是文藝青年聚集地,《小王子》《追風箏的人》《活著》幾乎就是文藝青年必備了。 

  豆瓣做為文藝青年聚集地,本身用戶屬於素質較高的群體。裡面分很多小組,讀書,電影,音樂,算是給大家找志同道合之友的好地方。關於讀書這個方面,在大家都很愛讀書的基礎上,我們可以用戶進行聚類分析。依靠的根據是對書籍的打分,這樣來計算不同用戶之間的距離。因為讀的書目越相似,對同一本書打分結果越接近,說明價值觀越相同,找出這樣的相似者,就能給用戶推薦一下潛在的『同志』,算是給豆瓣增加一個社交功能了。

  首先我們把用戶信息和書本信息結合,因為考慮到大部分書籍用戶之間交集為空,而且我的電腦的處理能力有限,所以截取了用戶和書籍的前100進行分析,這樣得到一個新的dataframe

然後我們建立鄰近性矩陣

ubrcore=doubancore.pivot('user','book','rate') 

即使在取前100的條件下,依然大部分是空白,為了能夠計算,我們把空白處替換成0.

ubrcore1=ubrcore.fillna(value=0)

然後對要進行距離計算,由於本身對書本的打分在1到5之間,純粹的大小差距並不大,所以我們更多的考慮在方向上的差異,所以用餘弦距離來反應不同用戶之間的差異性。

 構建公式,並將計算結果給userdistdf這個dataframe

Userdistdf結果如下

最像用戶的就是他自己,餘弦距離都是1。其他人只能是部分相像,果然人生得一知己難啊。不過知己找不到,我們可以給用戶找10個部分相像的『同志』

構建函數

試一下

Bingo,成功!!!!

這樣,我們可以為用戶qdmimi19810920找到了10個志同道合的『同志』了。

③ 豆瓣電影數據分析

這篇報告是我轉行數據分析後的第一篇報告,當時學完了Python,SQL,BI以為再做幾個項目就能找工作了,事實上……分析思維、業務,這兩者遠比工具重要的多。一個多月後回過頭來看,這篇報告雖然寫得有模有樣,但和數據分析報告還是有挺大差別的,主要原因在於:a.只是針對豆瓣電影數據分析太過寬泛了,具體關鍵指標到底是哪些呢?;b.沒有一個確切有效的分析模型/框架,會有種東一塊西一塊的拼接感。
即便有著這些缺點,我還是想把它掛上來,主要是因為:1.當做Pandas與爬蟲(Selenium+Request)練手,總得留下些證明;2.以豆瓣電影進行分析確實很難找到一條業務邏輯線支撐,總體上還是描述統計為主;3.比起網上能搜到的其他豆瓣電影數據分析,它更為詳細,可視化效果也不錯;

本篇報告旨在針對豆瓣電影1990-2020的電影數據進行分析,首先通過編寫Python網路爬蟲爬取了51375條電影數據,採集對象包括:電影名稱、年份、導演、演員、類型、出品國家、語言、時長、評分、評論數、不同評價佔比、網址。經過去重、清洗,最後得到29033條有效電影數據。根據電影評分、時長、地區、類型進行分析,描述了評分與時長、類型的關系,並統計了各個地區電影數量與評分。之後,針對演員、導演對數據進行聚合,給出產量與評分最高的名單。在分析過程中,還發現電影數量今年逐步增加,但評分下降,主要原因是中國地區今年低質量影視作品的增加。

另外,本篇報告還爬取了電影票房網( http://58921.com/ )1995-2020年度國內上映的影片票房,共採集4071條數據,其中3484條有效。進一步,本文分析了國內院線電影票房年度變化趨勢,票房與評分、評價人數、時長、地區的關系,票房與電影類型的關聯,並給出了票房最高的導演、演員與電影排名。

清洗、去重後,可以看到29033條數據長度、評分、評論數具有以下特點:

結合圖1(a)(b)看,可以看到電影數據時長主要集中在90-120分鍾之間,向兩極呈現階梯狀遞減,將數據按照短(60-90分鍾),中(90-120分鍾),長(120-150分鍾),特長(>150分鍾)劃分,各部分佔比為21.06%, 64.15%, 11.95%, 2.85%。

結合圖2(a)看,可以看到我們採集到的電影數據評分主要集中在6.0-8.0之間,向兩極呈現階梯狀遞減,在此按照評分劃分區間:2.0-4.0為口碑極差,4.0-6.0為口碑較差,6.0-7.0為口碑尚可,7.0-8.0為口碑較好,8.0-10.0為口碑極佳。

這5種電影數據的佔比分別為:5.78%, 23.09%, 30.56%, 29.22%, 11.34%

再將評分數據細化到每年進行觀察,可以發現,30年內電影數量與年度電影均分呈反相關,年度均分整體呈現下降趨勢,2016年電影均分最低,電影數量最多。

進一步做出每個年份下不同評級等級的電影數據佔比,可以發現,近年來,評分在[2.0,6.0)的電影數據佔比有著明顯提升,評分在[6.0,7.0)的數據佔比不變,評分在[7.0,10.0)的數據佔比減少,可能原因有:

對照圖5,可以發現,評分與時長、評論人數的分布大致呈現漏斗狀,高分電影位於漏鬥上部,低分電影位於漏斗下部。這意味著,如果一部電影的評論人數很多(特別是超過30w人觀影),時長較長(大於120min),那麼它大概率是一部好電影。

根據各個國家的電影數量作圖,可以得到圖6,列出電影數量前十的國家可得表格2,發現美國在電影數量上占第一,達到8490部,中國其次,達6222部。此外,法國,英國,日本的電影數量也超過1000,其餘各國電影數量相對較少。這可以說明美國電影有著較大的流量輸入,在中國產生了較大的影響。

進一步分析各國電影的質量,依據評分繪制評分箱線圖可得圖7,在電影數量排名前20的國家中:

接著我們可以探索,哪個國家的電影對豆瓣評分隨年份下降的貢獻最大,考慮到電影數量對應著評分的權重。根據上述各國的電影評分表現,我們可以猜測電影數量較多的國家可能對年度均分的下降有較大影響。於是,我們再計算出這些國家的年度電影均分,並與整體均分進行比較分析。

再作出中國大陸,中國台灣,中國香港的均分箱線圖圖9(a),可以看到,大陸電影均分低於港台電影,且存在大量低分電影拉低了箱體的位置。

分析相關性可得,大陸、香港、台灣電影年度均分與全部評分關聯度分別為R=0.979,0.919,0.822,說明濾去台灣和香港電影,大陸電影年度均分的變化趨勢與全部評分變化更接近。圖9(b)可以進一步反映這一點。

可以看到,大部分類型集中在X×Y=[10000,30000]×[6.00,7.50]的區間范圍內,劇情、喜劇、愛情、犯罪、動作類電影數量上較多,說明這些題材的電影是近三十年比較熱門的題材,其中劇情類電影佔比最多,音樂、傳記類電影平均得分更高,但在數量上較少,動作、驚悚類電影評論人數雖多,但評價普遍偏低。

除此之外,還有兩塊區域值得關註:

根據類型對電影數據進行聚合,整理得到各類型電影評分的時間序列,計算它們與整體均分時間序列的相關性,可得表格4與圖11,可以看到劇情,喜劇,懸疑這三種類型片與總分趨勢變化相關性最強,同時劇情、喜劇類電影在電影數量上也最多,因此可以認為這兩類電影對於下跌趨勢影響最大,但其餘類別電影的相關性也達到了0.9以上,說明幾種熱門的電影得分的變化趨勢與總體均分趨勢一致。

前面已經得知,中美兩國電影佔比最高,且對於均分時間序列的影響最大。在此,進一步對兩國電影進行類型分析,選取幾種主要的類型(數量上較多,且相關性較高)進行分析,分別是劇情,喜劇,愛情,驚悚,動作,懸疑類電影,繪制近年來幾類電影的數量變化柱狀圖與評分箱線圖可得圖12,13,14,15。

對導演與演員進行聚合,得到數據中共有15011名導演,46223名演員。按照作品數量在(0,2], (2,5], (5,10], (10,20], (20,999]進行分組統計導演數量,可以發現,15009名導演中有79.08%只拍過1-2部作品,46220名演員中有75.93%只主演過1-2部作品。忽略那些客串、跑龍套的演員,數據總體符合二八定律,即20%的人占據了行業內的大量資源。

在此,可以通過電影得分、每部電影評論人數以及電影數目尋找優秀的電影導演與演員。這三項指標分別衡量了導演/演員的創作水平,人氣以及產能。考慮到電影數據集中可能有少量影視劇/劇場版動畫,且影視劇/劇場版動畫受眾少於電影,但得分普遍要高於電影,這里根據先根據每部電影評論數量、作品數量來篩選導演/演員,再根據電影得分進行排名,並取前30名進行作圖,可得圖17,18。

結合電影票房網( http://58921.com/ )採集到的3353條票房數據,與豆瓣數據按照電影名稱進行匹配,可以得到1995-2020年在中國大陸上映的電影信息,分別分析中國內地電影的數量、票房變化趨勢,票房與評分、評價人數、時長、地區以及類型的關系,此外還給出了不同導演與演員的票房表現以及影片票房排名。

如圖19所示,國內票房數據與上映的電影數量逐年遞增,2020年記錄的只是上半年的數據,且由於受疫情影響,票房與數量驟減。這說明在不發生重大事件的情況下,國內電影市場規模正在不斷擴大。

對電影數據根據類型進行聚合,繪制散點圖21,可以發現:

提取導演/演員姓名,對導演/演員欄位進行聚合,計算每個導演/演員的票房總和,上映電影均分、以及執導/參與電影數目進行計算,作出票房總和前30名的導演/演員,可得圖22,23,圖中導演/演員標號反映了票房排名,具體每位導演/演員的上映影片數量、均分、每部電影評價人數、平均時長與總票房在表5、表6中給出。

最後根據電影票房進行排名,得到票房排名前20的電影如表格7所示,可以看到絕大部分上榜電影都是中國電影,索引序號為3、10、12、14、18、19為美國電影,這也反映了除國產電影之外,好萊塢大片占據較大的市場。

本篇報告採集了1990-2020年間豆瓣電影29033組有效數據,從豆瓣電影的評分、時長、地區、類型、演員、導演以及票房等信息進行分析評價,主要有以下結論:

④ Python抓取豆瓣電影排行榜

1.觀察url
首先觀察一下網址的結構 http://movie.douban.com/top250?start=0&filter=&type= :
可以看到,問號?後有三個參數 start、filter、type,其中start代表頁碼,每頁展示25部電影,0代表第一頁,以此類推25代表第二頁,50代表第三頁...
filter顧名思義,是過濾已經看過的電影,filter和type在這里不重要,可以不管。
2.查看網頁源代碼
打開上面的網址,查看源代碼,可以看到信息的展示結構如下:
1 <ol class="grid_view"> 2 <li> 3 <div class="item"> 4 <div class="pic"> 5 <em class="">1</em> 6 <a href="http://movie.douban.com/subject/1292052/"> 7 <img alt="肖申克的救贖" src="http://img3.douban.com/view/movie_poster_cover/ipst/public/p480747492.jpg" class=""> 8 </a> 9 </div>10 <div class="info">11 <div class="hd">12 <a href="http://movie.douban.com/subject/1292052/" class="">13 <span class="title">肖申克的救贖</span>14 <span class="title"> / The Shawshank Redemption</span>15 <span class="other"> / 月黑高飛(港) / 刺激1995(台)</span>16 </a>17 18 19 <span class="playable">[可播放]</span>20 </div>21 <div class="bd">22 <p class="">23 導演: 弗蘭克·德拉邦特 Frank Darabont 主演: 蒂姆·羅賓斯 Tim Robbins /...<br>24 1994 / 美國 / 犯罪 劇情25 </p>26 27 28 <div class="star">29 <span class="rating5-t"><em>9.6</em></span>30 <span>646374人評價</span>31 </div>32 33 <p class="quote">34 <span class="inq">希望讓人自由。</span>35 </p>36 </div>37 </div>38 </div>39 </li>
其中<em class="">1</em>代表排名,<span class="title">肖申克的救贖</span>代表電影名,其他信息的含義也很容易能看出來。
於是接下來可以寫正則表達式:
1 pattern = re.compile(u'<div.*?class="item">.*?<div.*?class="pic">.*?' 2 + u'<em.*?class="">(.*?)</em>.*?' 3 + u'<div.*?class="info">.*?<span.*?class="title">(.*?)' 4 + u'</span>.*?<span.*?class="title">(.*?)</span>.*?' 5 + u'<span.*?class="other">(.*?)</span>.*?</a>.*?' 6 + u'<div.*?class="bd">.*?<p.*?class="">.*?' 7 + u'導演: (.*?) ' 8 + u'主演: (.*?)<br>' 9 + u'(.*?) / (.*?) / '10 + u'(.*?)</p>'11 + u'.*?<div.*?class="star">.*?<em>(.*?)</em>'12 + u'.*?<span>(.*?)人評價</span>.*?<p.*?class="quote">.*?'13 + u'<span.*?class="inq">(.*?)</span>.*?</p>', re.S)
在此處flag參數re.S代表多行匹配。
3.使用面向對象的設計模式編碼
代碼如下:
1 # -*- coding:utf-8 -*- 2 __author__ = 'Jz' 3 import urllib2 4 import re 5 import sys 6 7 class MovieTop250: 8 def __init__(self): 9 #設置默認編碼格式為utf-810 reload(sys)11 sys.setdefaultencoding('utf-8')12 self.start = 013 self.param = '&filter=&type='14 self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64)'}15 self.movieList = []16 self.filePath = 'D:/coding_file/python_file/File/DoubanTop250.txt'17 18 def getPage(self):19 try:20 URL = 'http://movie.douban.com/top250?start=' + str(self.start)21 request = urllib2.Request(url = URL, headers = self.headers)22 response = urllib2.urlopen(request)23 page = response.read().decode('utf-8')24 pageNum = (self.start + 25)/2525 print '正在抓取第' + str(pageNum) + '頁數據...' 26 self.start += 2527 return page28 except urllib2.URLError, e:29 if hasattr(e, 'reason'):30 print '抓取失敗,具體原因:', e.reason31 32 def getMovie(self):33 pattern = re.compile(u'<div.*?class="item">.*?<div.*?class="pic">.*?'34 + u'<em.*?class="">(.*?)</em>.*?'35 + u'<div.*?class="info">.*?<span.*?class="title">(.*?)'36 + u'</span>.*?<span.*?class="title">(.*?)</span>.*?'37 + u'<span.*?class="other">(.*?)</span>.*?</a>.*?'38 + u'<div.*?class="bd">.*?<p.*?class="">.*?'39 + u'導演: (.*?) '40 + u'主演: (.*?)<br>'41 + u'(.*?) / (.*?) / '42 + u'(.*?)</p>'43 + u'.*?<div.*?class="star">.*?<em>(.*?)</em>'44 + u'.*?<span>(.*?)人評價</span>.*?<p.*?class="quote">.*?'45 + u'<span.*?class="inq">(.*?)</span>.*?</p>', re.S)46 while self.start <= 225:47 page = self.getPage()48 movies = re.findall(pattern, page)49 for movie in movies:50 self.movieList.append([movie[0], movie[1], movie[2].lstrip(' / '),
51 movie[3].lstrip(' / '), movie[4],
52 movie[5], movie[6].lstrip(), movie[7], movie[8].rstrip(),53 movie[9], movie[10], movie[11]])54 55 def writeTxt(self):56 fileTop250 = open(self.filePath, 'w')57 try:58 for movie in self.movieList:59 fileTop250.write('電影排名:' + movie[0] + '\r\n')60 fileTop250.write('電影名稱:' + movie[1] + '\r\n')61 fileTop250.write('外文名稱:' + movie[2] + '\r\n')62 fileTop250.write('電影別名:' + movie[3] + '\r\n')63 fileTop250.write('導演姓名:' + movie[4] + '\r\n')64 fileTop250.write('參與主演:' + movie[5] + '\r\n')65 fileTop250.write('上映年份:' + movie[6] + '\r\n')66 fileTop250.write('製作國家/地區:' + movie[7] + '\r\n')67 fileTop250.write('電影類別:' + movie[8] + '\r\n')68 fileTop250.write('電影評分:' + movie[9] + '\r\n')69 fileTop250.write('參評人數:' + movie[10] + '\r\n')70 fileTop250.write('簡短影評:' + movie[11] + '\r\n\r\n')71 print '文件寫入成功...'72 finally:73 fileTop250.close()74 75 def main(self):76 print '正在從豆瓣電影Top250抓取數據...'77 self.getMovie()78 self.writeTxt()79 print '抓取完畢...'80 81 DouBanSpider = MovieTop250()82 DouBanSpider.main()

代碼比較簡單,最後將信息寫入一個文件,沒有什麼需要解釋的地方。

⑤ 豆瓣為什麼用python

1.從語言排行榜上看
Python雖然是25歲的大叔級編程語言,但是近年來Python反而變得越來越流行,在TIOBE編程語言指數排行榜中,Python的排名從去年的第六名飆升到了第四名:

2.語言本身簡潔,優美,功能超級強大
Python的語法非常接近英語,去掉了傳統的C++/Java使用大括弧來區分一個方法體或者類的形式,而是採用強制縮進來表示一個方法或者類。風格統一,非常優美.而且內置了很多高效的庫,打個比方,同樣一項工作C語言可能要1000行,java要100行,python可能只要10行. 而且從桌面應用,web開發,自動化測試運維,爬蟲,人工智慧,大數據處理都能做,以後會詳細講一下.

3.跨平台
類似很多流行編程語言Java、C++、C都能跨平台而且開源,Python也是如此
由於它是開源的,所以也支持可移植性。你可以隨處運行Python,換句話說你在window上寫的代碼,可以很方便的再linux,mac上運行。

4.非常火爆的社區
Python有非常有名的社區,而且人氣很火爆,大家可以去python官網經常逛逛,還有github上搜一下python的帖子,很多開源的庫,你能想到的基本都已經有人開發了.而且版本還在不斷的迭代.

5.很多有名的大公司在用
國外非常有名的有Google,facebook,Yahoo,YueTube,還有美國宇航局NASA,像著名的開源雲計算平台openstack也是用python寫的,還有國內的豆瓣也是用python寫的.

⑥ 【python爬蟲實戰】爬取豆瓣影評數據

爬取豆瓣影評數據步驟:
1、獲取網頁請求
2、解析獲取的網頁
3、提速數據
4、保存文件

⑦ 怎麼用python編寫以下要求的程序

感覺你這個沒有現成的,到時有個模版推薦,

第5章Python網路爬蟲
5.1爬蟲基礎
5.1.1初識爬蟲
5.1.2網路爬蟲的演算法
5.2爬蟲入門實戰
5.2.1調用API
5.2.2爬蟲實戰
5.3爬蟲進階—高效率爬蟲
5.3.1多進程
5.3.2多線程
5.3.3協程
5.3.4小結

第6章Python數據存儲

6.1關系型資料庫MySQL
6.1.1初識MySQL
6.1.2Python操作MySQL
6.2NoSQL之MongoDB
6.2.1初識NoSQL
6.2.2Python操作MongoDB
6.3本章小結
6.3.1資料庫基本理論
6.3.2資料庫結合
6.3.3結束語

第7章Python數據分析

7.1數據獲取
7.1.1從鍵盤獲取數據
7.1.2文件的讀取與寫入
7.1.3Pandas讀寫操作
7.2數據分析案例
7.2.1普查數據統計分析案例
7.2.2小結

來源:《Python 3破冰人工智慧 從入門到實戰》

⑧ Python爬蟲實戰(1)requests爬取豆瓣電影TOP250

爬取時間:2020/11/25
系統環境:Windows 10
所用工具:Jupyter NotebookPython 3.0
涉及的庫:requestslxmlpandasmatplotlib umpy

蛋肥想法: 先將電影名稱、原名、評分、評價人數、分類信息從網站上爬取下來。

蛋肥想法: print數據列表後發現電影原名、分類信息等存在不需要的字元,需預先處理;同時因為後續想做一個豆瓣電影TOP250的維度分布圖,而同一電影存在多個發行國家、類型(如「法國 美國 / 劇情 動作 犯罪」),為了簡(偷)便(懶),這里均取第一個作為記入的數據;最後將數據保存為xlsx。

蛋肥想法: 蛋肥想知道在豆瓣電影TOP250中年份、國家、類型的維度數據,為了練手,使用剛才保存成xlsx的數據,並分別畫成雷達圖、柱形圖、扇形圖。

⑨ python爬蟲看電影會有什麼影響

閑著在家想看電影,但是猛地不知道要看啥電影,腦子想半天也想不出來一個好電影名字!乾脆直接在豆瓣電影上獲取最近熱門的電影,然後一個一個挨著看打發時間!

獲取豆瓣電影信息也是學爬蟲的一個入門例子,不知道為啥好多人學爬蟲都拿豆瓣電影來練手,一個應該是爬取比較簡單,另一個應該是這個平台反爬措施比較low,接下來讓我們來看看怎麼去實現獲取豆瓣電影前200個熱門電影信息!

1.請求數據

第一步先打開豆瓣電影網頁,分析請求看怎樣才能請求到數據。

刷新豆瓣電影網頁,從瀏覽器自帶的開發工具network中XHR可以看到各種請求,其中標黃的search_subject?type_movie這個請求就是請求電影信息,下面的type_tv就是請求電視劇信息的。從右邊標黃的request url中看到是請求的鏈接,但參數信息都被編碼,用urllib.parse.unquote()方法來進行解碼:

解碼後的請求連接如圖所示,猜想page_limt為每次請求到的數據量,page_start為從第幾頁開始請求,將這個鏈接在瀏覽器中打開來驗證一下猜想。

看到返回的是一個json字元串,裡麵包含50條電影信息,其中有名字,評分,鏈接等,將page_start = 0 變為1,就請求到下一個50條信息。根據鏈接的這個規律,可以對page_start 不斷賦值,從而實現多條信息的獲取!(公眾號 ly戲說編程)

第二步構造請求頭,即看看瀏覽器通過這個鏈接向伺服器發送了什麼請求參數才拿到這些json數據,打開瀏覽器開發者工具。

按照圖中1到4步可以看到這個請求的request headers,將請求頭裡面的信息全部拿出來,構造為爬蟲的請求頭。

坑:請求頭構造的時候Accept-Encoding要將br去掉。原因:Accept-Encoding用來聲明瀏覽器支持的編碼類型,一般有gzip,deflate,br 等等。但在python3的requests包中:

response.content 位元組方式的響應體,會自動為你解碼 gzip 和 deflate 壓縮 類型:bytes
reponse.text 字元串方式的響應體,會自動根據響應頭部的字元編碼進行解碼。類型:str
但偏偏不支持br的解碼,如果加上br可能造成你請求回來的是亂碼!所以要去掉br!

這樣通過模擬瀏覽器請求數據,就可以得到伺服器返回的json字元串,再解析json字元串得到每一個電影的詳情鏈接。

2.提取信息

在得到每一個電影的鏈接後,依次訪問每一個電影的鏈接,然後根據關鍵信息所在標簽用xpath進行提取。這里只對電影名字、年份、導演、類型、評分進行提取。

例如提取1917,在網頁右擊「1917」,然後選擇檢查,在Elements中1917所在位置右擊,選擇Copy,然後Copy XPath即可拿到1917的Xpath路徑,其它信息的提取操作步驟一樣。

但是不同電影網頁裡面相同類型的信息所在的XPath路徑可能不同,這就需要找到他們的相同處,提取相同的XPath路徑,從而進行大批量提取。

比如電影類型,用直接 xpath的方法就不好使,不同電影網頁裡面電影類型所處的標簽位置不同,用 xpath拷貝出來的路徑有差異,這就需要根據所在標簽的property屬性來獲取。主要代碼如下:

對每一網頁鏈接裡面的信息進行提取,這里每提取一個就停1s,為的是避免平台檢測到異常訪問,這樣就拿到每一個電影的信息,然後再將這信息保存到excel中,效果如圖所示

前幾名都是奧斯卡得獎電影有木有!感興趣的小夥伴快來試試!話不多說,挨著去看電影咯!去哪看?去公眾號 ly戲說編程 首頁vip影院看,裡面還有各種學習資源免費分享!

⑩ 豆瓣為什麼用python

python語言更靈活,更適合處理分析強大的數據。

閱讀全文

與對豆瓣電影的python分析相關的資料

熱點內容
然後我們一起看電影用英語怎麼說 瀏覽:566
類似生死狙擊的電影有哪些 瀏覽:32
ipad三星屏怎麼看電影 瀏覽:313
松江有哪些電影院 瀏覽:841
上海聯合院線電影 瀏覽:369
票房電影山路十八彎 瀏覽:142
多哥的電影哪裡有得看 瀏覽:229
我的世界拍電影的過程 瀏覽:502
最新電影2020盜墓 瀏覽:852
美團上買了電影票從哪裡看訂單 瀏覽:230
快遞小哥范桃花運是什麼電影 瀏覽:51
4月5號有哪些電影上映的電影 瀏覽:269
5分析絕代艷後電影中的家居風格 瀏覽:21
電影賊王無刪版資源 瀏覽:242
向上向善微電影 瀏覽:868
農村留守兒童的電影幾乎零票房 瀏覽:49
看電影為什麼要戴眼鏡 瀏覽:115
淄川的微電影 瀏覽:816
地下電影完整版 瀏覽:196
怎麼在支付寶買vip的電影票 瀏覽:930