selenium破解動(dòng)態(tài)請(qǐng)求茫经,自動(dòng)爬取百度文庫的PPT巷波!

這次,我們來爬取百度文庫的VIP才能下載的PPT文檔卸伞。我們學(xué)爬蟲的時(shí)候抹镊,最讓我們頭疼的可能就是動(dòng)態(tài)請(qǐng)求了,因?yàn)椴黄平饫锩娴慕涌诨绨粒覀兙蜎]有辦法拿到我們想要的數(shù)據(jù)垮耳。

破解接口確實(shí)是有很大的難度,對(duì)于初學(xué)者甚至是滋生爬蟲工程師都是很有難度的遂黍,畢竟我們爬蟲是與人在對(duì)抗而不是真的和機(jī)器相愛相殺终佛。

所以,今天我們用selenium直接獲取到動(dòng)態(tài)渲染后的參數(shù)來下載我們想要的數(shù)據(jù)雾家。

image

一铃彰、爬取前的準(zhǔn)備

python庫

  1. requests
  2. lxml
  3. selenium
  4. selenium驅(qū)動(dòng)器
  5. 谷歌瀏覽器

selenium原理介紹

它可以把渲染之后的前端頁面返回給我們,這樣我們就能夠拿到我們想要的數(shù)據(jù)了芯咧。

二豌研、實(shí)現(xiàn)思路

首先,我們要引入chrome自動(dòng)化驅(qū)動(dòng)器唬党,然后加載這個(gè)網(wǎng)頁鹃共。

image

百度文庫頁面分析

image

從這個(gè)頁面中,我們發(fā)現(xiàn)驶拱,其他都很正常霜浴,但是呢,這個(gè)頁面有一個(gè)反扒措施蓝纲,就是有一個(gè)“還剩xx頁未讀阴孟,繼續(xù)閱讀”這個(gè)字段,其實(shí)税迷,這個(gè)就是我們這次遇到的最大的反爬永丝。

在解決這個(gè)反爬問題之前,我們先分析一下最先出來的那幾張PPT箭养,選擇我們爬取它的方法慕嚷。

三、分析前端頁面

1.一開始就展現(xiàn)出來的頁面分析

image

我們發(fā)現(xiàn),在前三個(gè)顯示出來的ppt是以圖片的形式喝检,而且嗅辣,圖片的url已經(jīng)暴露在了頁面中,并且挠说,存儲(chǔ)在前端中的格式是完全相同的澡谭,非常的理想。

2.隱藏頁面的分析

現(xiàn)在损俭,我們點(diǎn)擊繼續(xù)閱讀蛙奖,看看之后的圖片是不是也是這么儲(chǔ)存的。

image

我們發(fā)現(xiàn)杆兵,接下來隱藏的頁面中外永,圖片的url存儲(chǔ)方式并沒有發(fā)生什么大變化,無非解釋外面又套了一層div拧咳,并且div的class屬性伯顶,僅僅只在reader-pageNo-<頁數(shù)>,發(fā)生了變化骆膝。

到此祭衩,我們前端就分析完了≡那總結(jié)如下:

  1. 一開始展示的頁面中掐暮,圖片的url在class是ppt-image-wrap的div下的img標(biāo)簽
  2. 隱藏的圖片url僅僅只在剛剛分析出來的div上套了一層盒子,并且class中僅僅只有reader-pageNo-<頁數(shù)>這個(gè)參數(shù)需要改變

3.思路

那我們先用selenium政钟,渲染出隱藏后的前端頁面路克,然后將渲染后的頁面?zhèn)魅雔xml中的etree中去解析,再通過xpath把url再匹配出來养交,通過request.get()來下載圖片精算,最后通過上下文處理器傳入文件中保存。

這樣碎连,我們的PPT爬取就實(shí)現(xiàn)了灰羽。

4.開始實(shí)現(xiàn)

在分析完了前端頁面后,我們可以開始實(shí)現(xiàn)爬取了鱼辙。

代碼

image

5.代碼解釋

1)input阻斷

根據(jù)剛剛講的原理廉嚼,我們放個(gè)input阻斷程序運(yùn)行,然后我們手動(dòng)點(diǎn)擊繼續(xù)閱讀倒戏,然后回到程序中按回車?yán)^續(xù)進(jìn)行程序怠噪。

2)sleep函數(shù)

這個(gè)函數(shù)是用來模擬的第一步。因?yàn)樵谧x取的過程中杜跷,頁面的加載也是需要時(shí)間的傍念,所以我們需要有等待的時(shí)間矫夷。

3)模擬滑動(dòng)

image

這個(gè)代碼,大家只需要用的時(shí)候復(fù)制就好了捂寿,其中,535這個(gè)就是一個(gè)參數(shù)孵运,在實(shí)驗(yàn)中秦陋,發(fā)現(xiàn)535這個(gè)參數(shù)配合上range()使用,能夠?qū)崿F(xiàn)每次都加載一個(gè)到兩個(gè)頁面治笨。

大家可能對(duì)range里面的參數(shù)感到好奇驳概,這個(gè)我也解釋一下。這個(gè)參數(shù)旷赖,就是剩下的頁數(shù)顺又,比如在點(diǎn)擊繼續(xù)閱讀后,還剩31個(gè)PPT等孵,那么range的最后就填31稚照。這個(gè)是根據(jù)你想要的PPT的頁數(shù)來的。

sleep是要等待滑動(dòng)后俯萌,頁面加載出來果录。這樣我們才能匹配到圖片的url。

4)圖片url匹配

image

首先咐熙,一開始展現(xiàn)出來的圖片我們就直接用xpath匹配了弱恒,我們來看看隱藏的url匹配

在第二個(gè)for循環(huán)中,range里面的參數(shù)棋恼,就是接下來顯示的返弹,和最后一個(gè)圖片的url所對(duì)應(yīng)的數(shù)字。

在all_ppt_div后面爪飘,我們看reader-pageNo-%s义起,其中,%s就是用來傳數(shù)字的师崎,因?yàn)閯倓偽覀兎治龀鰜聿⑸龋琩iv中class的變化和PPT的頁數(shù)是一致的,所以通過這個(gè)方法傳進(jìn)去抡诞。

然后再將url存進(jìn)列表中穷蛹。

5)文件存儲(chǔ)

image

這個(gè)就是文件操作,存入當(dāng)前目錄昼汗。其中肴熏,content就是文件的二進(jìn)制形式。

四顷窒、總結(jié)

到此蛙吏,百度文庫PPT的爬取就結(jié)束啦源哩。大家可以用這個(gè)代碼和思想爬取絕大多數(shù)的百度文庫ppt,因?yàn)榍岸说目蚣苁腔静粫?huì)變的鸦做,所以每個(gè)PPT中圖片url在前端的存儲(chǔ)格式也是一樣的励烦,我們要改的也只是程序中的部分參數(shù)就可以了。

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泼诱,一起剝皮案震驚了整個(gè)濱河市坛掠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌治筒,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耸袜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡堤框,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蜈抓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骗绕,“玉大人,你說我怎么就攤上這事酬土。” “怎么了撤缴?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)叽唱。 經(jīng)常有香客問我屈呕,道長(zhǎng),這世上最難降的妖魔是什么棺亭? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮镶摘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘碌冶。我一直安慰自己,他們只是感情好扑庞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著罐氨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪塔嬉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天邑遏,我揣著相機(jī)與錄音恰矩,去河邊找鬼憎蛤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛俩檬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播棚辽,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼屈藐,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了联逻?” 一聲冷哼從身側(cè)響起搓扯,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤包归,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后公壤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锦担,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年慨削,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了套媚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磁椒。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖浆熔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情慎皱,我是刑警寧澤叶骨,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站忽刽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏跪帝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一斑唬、第九天 我趴在偏房一處隱蔽的房頂上張望黎泣。 院中可真熱鬧,春花似錦聘裁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谴餐。三九已至呆抑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鹊碍,已是汗流浹背食绿。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國打工公罕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铲汪。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓罐柳,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親张吉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355