導航:首頁 > 電影資訊 > 豆瓣電影短評爬蟲

豆瓣電影短評爬蟲

發布時間:2023-12-16 15:51:56

Ⅰ 怎麼用python抓取豆瓣上用戶對電影的評分

#!/usr/bin/env python2.7# encoding=utf-8"""
爬取豆瓣電影TOP250 - 完整示例代碼
"""import codecsimport requestsfrom bs4 import BeautifulSoup

DOWNLOAD_URL = 'http://movie.douban.com/top250/'def download_page(url):
return requests.get(url, 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'
}).contentdef parse_html(html):
soup = BeautifulSoup(html)
movie_list_soup = soup.find('ol', attrs={'class': 'grid_view'})

movie_name_list = [] for movie_li in movie_list_soup.find_all('li'):
detail = movie_li.find('div', attrs={'class': 'hd'})
movie_name = detail.find('span', attrs={'class': 'title'}).getText()

movie_name_list.append(movie_name)

next_page = soup.find('span', attrs={'class': 'next'}).find('a') if next_page: return movie_name_list, DOWNLOAD_URL + next_page['href'] return movie_name_list, Nonedef main():
url = DOWNLOAD_URL with codecs.open('movies', 'wb', encoding='utf-8') as fp: while url:
html = download_page(url)
movies, url = parse_html(html)
fp.write(u'{movies}\n'.format(movies='\n'.join(movies)))if __name__ == '__main__':
main()

Ⅱ python爬蟲抓取電影top20排名怎麼寫

初步接觸python爬蟲(其實python也是才起步),發現一段代碼研究了一下,覺得還比較有用處,Mark下。
上代碼:

#!/usr/bin/python#coding=utf-8#Author: Andrew_liu#mender:cy"""
一個簡單的Python爬蟲, 用於抓取豆瓣電影Top前100的電影的名稱
Anthor: Andrew_liu
mender:cy
Version: 0.0.2
Date: 2017-03-02
Language: Python2.7.12
Editor: JetBrains PyCharm 4.5.4
"""import stringimport reimport urllib2import timeclass DouBanSpider(object) :
"""類的簡要說明
主要用於抓取豆瓣Top100的電影名稱

Attributes:
page: 用於表示當前所處的抓取頁面
cur_url: 用於表示當前爭取抓取頁面的url
datas: 存儲處理好的抓取到的電影名稱
_top_num: 用於記錄當前的top號碼
"""

def __init__(self):
self.page = 1
self.cur_url = "h0?start={page}&filter=&type="
self.datas = []
self._top_num = 1
print u"豆瓣電影爬蟲准備就緒, 准備爬取數據..."

def get_page(self, cur_page):
"""
根據當前頁碼爬取網頁HTML
Args:
cur_page: 表示當前所抓取的網站頁碼
Returns:
返回抓取到整個頁面的HTML(unicode編碼)
Raises:
URLError:url引發的異常
"""
url = self.cur_url try:
my_page = urllib2.urlopen(url.format(page=(cur_page - 1) * 25)).read().decode("utf-8") except urllib2.URLError, e: if hasattr(e, "code"): print "The server couldn't fulfill the request."
print "Error code: %s" % e.code elif hasattr(e, "reason"): print "We failed to reach a server. Please check your url and read the Reason"
print "Reason: %s" % e.reason return my_page def find_title(self, my_page):
"""
通過返回的整個網頁HTML, 正則匹配前100的電影名稱

Args:
my_page: 傳入頁面的HTML文本用於正則匹配
"""
temp_data = []
movie_items = re.findall(r'<span.*?class="title">(.*?)</span>', my_page, re.S) for index, item in enumerate(movie_items): if item.find("&nbsp") == -1:
temp_data.append("Top" + str(self._top_num) + " " + item)
self._top_num += 1
self.datas.extend(temp_data) def start_spider(self):
"""
爬蟲入口, 並控制爬蟲抓取頁面的范圍
"""
while self.page <= 4:
my_page = self.get_page(self.page)
self.find_title(my_page)
self.page += 1def main():
print u"""
###############################
一個簡單的豆瓣電影前100爬蟲
Author: Andrew_liu
mender: cy
Version: 0.0.2
Date: 2017-03-02
###############################
"""
my_spider = DouBanSpider()
my_spider.start_spider()
fobj = open('/data/moxiaokai/HelloWorld/cyTest/blogcode/top_move.txt', 'w+') for item in my_spider.datas: print item
fobj.write(item.encode("utf-8")+' ')
time.sleep(0.1) print u"豆瓣爬蟲爬取完成"if __name__ == '__main__':
main()

運行結果:

Ⅲ .利用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



分享

Ⅳ 怎樣避開豆瓣對爬蟲的封鎖,從而抓取豆瓣上電影內容

在互聯網中,有網路爬蟲的地方,絕對少不了反爬蟲的身影。網站反爬蟲的攔截前提是要正確區分人類訪問用戶和網路機器人,當發現可疑目標時,通過限制IP地址等措施阻止你繼續訪問。爬蟲該如何突破反爬蟲限制?

一、構建合理的HTTP請求頭
HTTP的請求頭是在你每次向網路伺服器發送請求時,傳遞的一組屬性和配置信息。由於瀏覽器和Python爬蟲發送的請求頭不同,有可能被反爬蟲檢測出來。

二、設置cookie的學問
Cookie是一把雙刃劍,有它不行,沒它更不行。網站會通過cookie跟蹤你的訪問過程,如果發現你有爬蟲行為會立刻中斷你的訪問,比如你特別快的填寫表單,或者短時間內瀏覽大量頁面。而正確地處理cookie,又可以避免很多採集問題,建議在採集網站過程中,檢查一下這些網站生成的cookie,然後想想哪一個是爬蟲需要處理的。

三、正常的時間訪問路徑
合理控制採集速度,是Python爬蟲不應該破壞的規則,盡量為每個頁面訪問時間增加一點兒間隔,可以有效幫助你避免反爬蟲。

四、使用http
對於分布式爬蟲和已經遭遇反爬蟲的人來說,使用http將成為你的首選。Ipidea分布地區廣,可滿足分布式爬蟲使用需要。支持api提取,對Python爬蟲來說再適合不過。

Ⅳ 豆瓣電影數據分析

這篇報告是我轉行數據分析後的第一篇報告,當時學完了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)requests爬取豆瓣電影TOP250

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

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

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

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

Ⅶ ios版豆瓣為什麼沒有短評了

11 月 2 日,豆瓣電影官方發文回應了這一質疑,表示調整早在3年前已經開始,自2017年起,豆瓣電影不展示全部短評,自2020年4月份起,豆瓣讀書、豆瓣音樂已不展示全部短評,並非豆瓣電影獨有。調整原因是「為了在不影響用戶體驗的前提下反爬蟲、反水軍」。

豆瓣電影的廣播
豆瓣對 36 氪發來了官方回應,全文如下,未經刪減:
1)三年前的產品改動:部分短評展現機制是3年前上線的產品改動,目前已經書影音全產品線應用,經歷了一段時間長度才有個別用戶提出異議,已經說明了這個產品調整對絕大多數用戶使用體驗並不會造成明顯的影響;事實證明,幾年來豆瓣通過短評展示策略的調整,在優化短評消費體驗、清除水軍信息影響上,獲得了不錯的效果。
2)有限的評論展示:豆瓣目前展示的短評數量限制是計算絕大多數用戶短評閱讀數量後的統計結果,只有水軍才需要展示所有短評信息,通過分析比對數據,研究豆瓣反水軍策略,收集用戶評分評論信息,以便騷擾用戶,招募水軍;確保自己發的每一條都被收錄和展示,並用來截圖作為向上家證明可按條收費的依據,普通用戶並沒有這個使用需求。所以不展示全部了首扒,截不了圖了,究竟傷了誰的利益是一目瞭然的。
3)評分演算法並沒有變:使用演算法優化「短評展示」的目的是把不可信的短評藏起來,讓他們完全被正常短評所替代,以盡可能降低水軍的短評對條目信息造成影響。而被識別的水軍賬號發布的短評也不會被刻意刪除,那等於告訴水軍這個無效賬號不可用,我們不會告知水軍這套關聯。因此,無論展示不展示全部「短評」,都有部分評論相關的打分是不會被計入條目評分的,這個「評分」的演算法從來沒變,與短評的展示機制毫無關系。
4)關於反水軍:作為一個在這方面積累了15年的團隊,豆瓣建立了系統、有效的反水軍機制。水軍行為雖然在不斷變化發展,豆瓣的反水軍反作弊措施也在不斷進化之中。概括地說,一方面,在大數據面前,水軍的群體行為特徵是很容易被演算法發現的,同時輔助者衡昌用戶的「書影音檔案」,數據的異常波動很容易被識別和定位;另一方面,豆瓣評分的正常用戶規模越來越大,已經攔孝足夠大到在統計意義上屏蔽水軍可能造成的影響。那些聲稱能刷動豆瓣評分的水軍公司,實際上都是騙人的。買水軍「維護或控制評分」,花了錢,刷不動分,甚至可能激起用戶的反水行動,這類事件之前也層出不窮,豆瓣還需要處理後者的非正常打分,徒增工作量。真誠地希望買水軍者把這些錢花在別的地方或者更耐心地做好作品本身上。
5)影視作品爭議度:影視作品具有很大爭議是個社會現象,在具有爭議的條目下面,才會有不相關或不文明的短評被折疊或隱藏起來,以維護正常的討論氛圍,這是業界通用的做法。當然爭議度越大才會隱藏越多,如豆瓣電影公告所述。
另外,再次強調一下豆瓣評分從來沒有,以後也不會有任何形式在電影評分上的商業合作。凡是聲稱自己有辦法買到豆瓣分數或者收錢開分的,都是騙人的。

閱讀全文

與豆瓣電影短評爬蟲相關的資料

熱點內容
能看韓國電影的微信號 瀏覽:159
經典武打動作電影戰 瀏覽:857
驚險災難電影大全 瀏覽:351
周星馳要出來電影了嗎 瀏覽:517
楊冪2015出了多少電影票 瀏覽:673
電影產業變得越來越多樣英語怎麼說 瀏覽:154
劇本電影網 瀏覽:933
2017即將上映動漫電影 瀏覽:276
2016電影數據分析 瀏覽:291
劉德華黑幫電影插曲 瀏覽:524
侯孝賢最好的時光電影插曲 瀏覽:798
沈騰2017新電影羞羞的鐵拳 瀏覽:764
成龍拍電影嗎 瀏覽:672
電影動作大片古裝片 瀏覽:212
2015校園電影排行榜前十名 瀏覽:16
歐美吃人電影 瀏覽:468
2017值得看的喜劇電影 瀏覽:482
23釜山電影節 瀏覽:903
蘇聯電影2017 瀏覽:859
北京國際電影節朱一龍 瀏覽:65