Python3抓取貓眼電影數(shù)據(jù)

2018-09-15 15:53 更新
本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個人專欄
下載W3Cschool手機App,0基礎(chǔ)隨時隨地學(xué)編程>>戳此了解

導(dǎo)語

T_T 愚人節(jié)似乎不宜出門?

那就爬波貓眼電影看看有什么值得看的電影?

于是T_T

大概是沒什么技術(shù)含量的~~~

Let's Go?。。?/p>

相關(guān)文件

百度網(wǎng)盤下載鏈接: https://pan.baidu.com/s/1WJ8PL5nydttXjteQOWqRrg 

密碼: v78a

開發(fā)工具

Python版本:3.6.4

相關(guān)模塊:openpyxl模塊;requests模塊;win_unicode_console模塊;bs4模塊;以及一些Python自帶的模塊。

環(huán)境搭建

安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。

主要思路

目的:

爬取http://maoyan.com/films中的電影信息:

其中要爬取的內(nèi)容為:

電影名、電影評分、電影介紹頁鏈接以及電影簡介。

思路:

先爬取電影名、電影評分和電影介紹頁鏈接,再根據(jù)電影介紹頁鏈接爬取電影簡介。

這么算下來,一頁30部電影,需要31個requests。

結(jié)果只是為了爬這么點數(shù)據(jù),效率可想而知T_T

最后把爬到的數(shù)據(jù)存入Excel中。

具體實現(xiàn)方式詳見相關(guān)文件中的源代碼。

補充說明

(1)cookies.py文件中的cookie獲取方式

按上圖所示方式獲得cookie值后填入cookies.py文件的相關(guān)位置中:

第一個Cookies列表是不含登錄信息的cookie;

第二個login_Cookies列表是含登錄信息的cookie。

含登錄信息的cookie獲取方式和不含登錄信息的cookie獲取方式相同,但是需要事先在網(wǎng)頁上登錄(登錄選項在網(wǎng)頁的右上角)。

(2)關(guān)于貓眼的反爬蟲

貓眼電影的反爬蟲機制十分到位。T_T

首先是對于非登錄用戶,你只能查看前100頁的電影信息。其次,如果你的請求過于頻繁,是會被封的:

經(jīng)過測試,得到的結(jié)論如下:

設(shè)置隨機的時間間隔并不有效防止ip被封;

更換cookie值無法防止ip被封;

爬取20頁左右的電影數(shù)據(jù)后代碼就GG了等等。

沒有仔細(xì)研究貓眼電影是如何識別爬蟲的。

但是可以感覺出其識別機制很智能。

比如我被封之后想嘗試通過更換ip解決,但是我發(fā)現(xiàn)更換ip地址之后可以獲取的數(shù)據(jù)量竟然比前一個ip少了很多。

因此,本人提供的正版源代碼沒有想過和貓眼的維護(hù)人員斗智斗勇,只是加了個隨機的時間間隔??梢耘廊〉臄?shù)據(jù)量在25頁左右。選個電影而已,不想搞這么復(fù)雜。斗智斗勇的結(jié)果可能就是驗證碼輸入越來越麻煩,給網(wǎng)站帶來不必要的壓力,影響正常用戶的使用體驗等等。弊大于利。

反爬蟲解決方案

為了不讓爬蟲愛好者失望,還是稍微提一下吧~~~

網(wǎng)上關(guān)于反爬蟲機制的解決方案很多,比如使用代理池之類的等等。

本人只是針對貓眼電影信息爬取過程中存在的反爬蟲機制提出一項解決方案。

方案很簡單,它不就是想讓我們輸入驗證碼來證明我們是人嘛~~~那就證明給它看咯。

簡單測試后可以發(fā)現(xiàn):

只要把識別之后的驗證碼和一些其他參數(shù)以post的方式請求:

http://maoyan.com/films?__oceanus_captcha=1

這個鏈接就可以解除ip封鎖~~~

很簡單。

我在相關(guān)文件中提供了一個測試版本(test.py)。

至于驗證碼獲取的接口以及驗證碼如何自動識別,我就不一一介紹了,測試版本里也沒有(源代碼里獲取驗證碼的接口只是臨時接口,所以不是一個普適的版本)。。。

感興趣的同學(xué)可以自己研究一下~~~

挺簡單的,方案也很多T_T,但是為了避免別人濫用我就不公布最終的驗證碼破解版本了。

使用演示

在cmd窗口中運行MY_Spider.py文件即可。

如下圖所示(爬取20頁數(shù)據(jù)):

其中9分以上的電影有:

摔跤吧!爸爸    

戰(zhàn)狼2    

小蘿莉的猴神大叔    

厲害了,我的國    

尋夢環(huán)游記    

霸王別姬    

速度與激情7    

紅海行動    

神秘巨星    

瘋狂動物城    

冰雪奇緣    

泰坦尼克號    

看不見的客人    

泰坦尼克號3D    

速度與激情8    

奇跡男孩    

縫紉機樂隊    

夏洛特?zé)?   

戰(zhàn)狼    

湄公河行動    

蝙蝠俠:黑暗騎士    

九品芝麻官    

頭號玩家    

唐人街探案2    

前任3:再見前任    

帕丁頓熊2    

公牛歷險記    

辛德勒的名單    

一個人的課堂    

智取威虎山    

你的名字。    

英雄本色    

二十二    

美國隊長2    

刀劍神域:序列之爭    

銀河護(hù)衛(wèi)隊    

變形金剛4:絕跡重生    

我的少女時代    

春光乍泄    

閃光少女    

熊出沒·變形記    

羞羞的鐵拳    

芳華    

捉妖記    

建軍大業(yè)    

侏羅紀(jì)世界    

熊出沒·奇幻空間    

尋龍訣    

末日崩塌    

老炮兒    

熊出沒之熊心歸來    

比得兔    

戀愛回旋    

南極之戀    

追龍    

銀河護(hù)衛(wèi)隊2    

滾蛋吧!腫瘤君    

美人魚    

唐人街探案    

阿凡達(dá)    

拆彈·專家    

魔獸    

鋼鐵俠3    

藍(lán)精靈:尋找神秘村    

至愛梵高·星空之謎    

愛在記憶消逝前    

碟中諜5:神秘國度    

傲嬌與偏見    

That'all~~~

看電影去了~~~

更多

代碼截止2018-04-01測試無誤。

若日后貓眼電影有較大更新,源代碼將僅供參考。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號