本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄
下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解
T_T 愚人節(jié)似乎不宜出門?
那就爬波貓眼電影看看有什么值得看的電影?
于是T_T
大概是沒什么技術(shù)含量的~~~
Let's Go!??!
百度網(wǎng)盤下載鏈接: https://pan.baidu.com/s/1WJ8PL5nydttXjteQOWqRrg
密碼: v78a
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)容為:
電影名、電影評(píng)分、電影介紹頁鏈接以及電影簡介。
思路:
先爬取電影名、電影評(píng)分和電影介紹頁鏈接,再根據(jù)電影介紹頁鏈接爬取電影簡介。
這么算下來,一頁30部電影,需要31個(gè)requests。
結(jié)果只是為了爬這么點(diǎn)數(shù)據(jù),效率可想而知T_T
最后把爬到的數(shù)據(jù)存入Excel中。
具體實(shí)現(xiàn)方式詳見相關(guān)文件中的源代碼。
補(bǔ)充說明
(1)cookies.py文件中的cookie獲取方式
按上圖所示方式獲得cookie值后填入cookies.py文件的相關(guān)位置中:
第一個(gè)Cookies列表是不含登錄信息的cookie;
第二個(gè)login_Cookies列表是含登錄信息的cookie。
含登錄信息的cookie獲取方式和不含登錄信息的cookie獲取方式相同,但是需要事先在網(wǎng)頁上登錄(登錄選項(xiàng)在網(wǎng)頁的右上角)。
(2)關(guān)于貓眼的反爬蟲
貓眼電影的反爬蟲機(jī)制十分到位。T_T
首先是對(duì)于非登錄用戶,你只能查看前100頁的電影信息。其次,如果你的請(qǐng)求過于頻繁,是會(huì)被封的:
經(jīng)過測(cè)試,得到的結(jié)論如下:
設(shè)置隨機(jī)的時(shí)間間隔并不有效防止ip被封;
更換cookie值無法防止ip被封;
爬取20頁左右的電影數(shù)據(jù)后代碼就GG了等等。
沒有仔細(xì)研究貓眼電影是如何識(shí)別爬蟲的。
但是可以感覺出其識(shí)別機(jī)制很智能。
比如我被封之后想嘗試通過更換ip解決,但是我發(fā)現(xiàn)更換ip地址之后可以獲取的數(shù)據(jù)量竟然比前一個(gè)ip少了很多。
因此,本人提供的正版源代碼沒有想過和貓眼的維護(hù)人員斗智斗勇,只是加了個(gè)隨機(jī)的時(shí)間間隔??梢耘廊〉臄?shù)據(jù)量在25頁左右。選個(gè)電影而已,不想搞這么復(fù)雜。斗智斗勇的結(jié)果可能就是驗(yàn)證碼輸入越來越麻煩,給網(wǎng)站帶來不必要的壓力,影響正常用戶的使用體驗(yàn)等等。弊大于利。
反爬蟲解決方案
為了不讓爬蟲愛好者失望,還是稍微提一下吧~~~
網(wǎng)上關(guān)于反爬蟲機(jī)制的解決方案很多,比如使用代理池之類的等等。
本人只是針對(duì)貓眼電影信息爬取過程中存在的反爬蟲機(jī)制提出一項(xiàng)解決方案。
方案很簡單,它不就是想讓我們輸入驗(yàn)證碼來證明我們是人嘛~~~那就證明給它看咯。
簡單測(cè)試后可以發(fā)現(xiàn):
只要把識(shí)別之后的驗(yàn)證碼和一些其他參數(shù)以post的方式請(qǐng)求:
http://maoyan.com/films?__oceanus_captcha=1
這個(gè)鏈接就可以解除ip封鎖~~~
很簡單。
我在相關(guān)文件中提供了一個(gè)測(cè)試版本(test.py)。
至于驗(yàn)證碼獲取的接口以及驗(yàn)證碼如何自動(dòng)識(shí)別,我就不一一介紹了,測(cè)試版本里也沒有(源代碼里獲取驗(yàn)證碼的接口只是臨時(shí)接口,所以不是一個(gè)普適的版本)。。。
感興趣的同學(xué)可以自己研究一下~~~
挺簡單的,方案也很多T_T,但是為了避免別人濫用我就不公布最終的驗(yàn)證碼破解版本了。
在cmd窗口中運(yùn)行MY_Spider.py文件即可。
如下圖所示(爬取20頁數(shù)據(jù)):
其中9分以上的電影有:
摔跤吧!爸爸
戰(zhàn)狼2
小蘿莉的猴神大叔
厲害了,我的國
尋夢(mèng)環(huán)游記
霸王別姬
速度與激情7
紅海行動(dòng)
神秘巨星
瘋狂動(dòng)物城
冰雪奇緣
泰坦尼克號(hào)
看不見的客人
泰坦尼克號(hào)3D
速度與激情8
奇跡男孩
縫紉機(jī)樂隊(duì)
夏洛特?zé)?
戰(zhàn)狼
湄公河行動(dòng)
蝙蝠俠:黑暗騎士
九品芝麻官
頭號(hào)玩家
唐人街探案2
前任3:再見前任
帕丁頓熊2
公牛歷險(xiǎn)記
辛德勒的名單
一個(gè)人的課堂
智取威虎山
你的名字。
英雄本色
二十二
美國隊(duì)長2
刀劍神域:序列之爭
銀河護(hù)衛(wèi)隊(duì)
變形金剛4:絕跡重生
我的少女時(shí)代
春光乍泄
閃光少女
熊出沒·變形記
羞羞的鐵拳
芳華
捉妖記
建軍大業(yè)
侏羅紀(jì)世界
熊出沒·奇幻空間
尋龍?jiān)E
末日崩塌
老炮兒
熊出沒之熊心歸來
比得兔
戀愛回旋
南極之戀
追龍
銀河護(hù)衛(wèi)隊(duì)2
滾蛋吧!腫瘤君
美人魚
唐人街探案
阿凡達(dá)
拆彈·專家
魔獸
鋼鐵俠3
藍(lán)精靈:尋找神秘村
至愛梵高·星空之謎
愛在記憶消逝前
碟中諜5:神秘國度
傲嬌與偏見
That'all~~~
看電影去了~~~
代碼截止2018-04-01測(cè)試無誤。
若日后貓眼電影有較大更新,源代碼將僅供參考。
更多建議: