selenium + phantomjs 模擬點(diǎn)擊按鈕,或者另寫代碼實(shí)現(xiàn)js函數(shù)openVideo();
從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。創(chuàng)新互聯(lián)將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。
順著第一步再去解析新頁面,看看能否找到視頻的原始地址;
假設(shè)視頻的原始地址第二步找到了,在通過視頻的原始地址下載視頻就OK啦。
打開瀏覽器,以google chrome為例,輸入你上面的網(wǎng)址。
然后按F12打開調(diào)試窗口,然后嘗試勾選左邊某一個(gè)選項(xiàng),馬上可以看到右邊的調(diào)試窗口有東西輸出。
找到第一個(gè)輸出的行,點(diǎn)擊header,可以看到每一個(gè)都是用的post方法。
所以只需要構(gòu)造相應(yīng)的header并post上去,就可以得到你想要的數(shù)據(jù)了。
嘗試每一個(gè)request都點(diǎn)開看一下
就是你要構(gòu)造的數(shù)據(jù)
FormData就是你要構(gòu)造的數(shù)據(jù)
把數(shù)據(jù)構(gòu)造好然后使用post函數(shù)發(fā)送給網(wǎng)站
這個(gè)得到的是一個(gè)網(wǎng)頁格式的數(shù)據(jù)。
而這個(gè)發(fā)放返回的是json數(shù)據(jù),然后編碼成dict格式 提取出數(shù)據(jù)就可以了。
js代碼是需要js引擎運(yùn)行的,Python只能通過HTTP請求獲取到HTML、CSS、JS原始代碼而已。
不知道有沒有用Python編寫的JS引擎,估計(jì)需求不大。
我一般用PhantomJS、CasperJS這些引擎來做瀏覽器抓取。
直接在其中寫JS代碼來做DOM操控、分析,以文件方式輸出結(jié)果。
讓Python去調(diào)用該程序,通過讀文件方式獲得內(nèi)容。
一、查看相應(yīng)的js代碼,用python獲取原始數(shù)據(jù)之后,模仿js編寫相應(yīng)的python代碼。
二、通過接口api獲得數(shù)據(jù),直接使用python獲取接口數(shù)據(jù)并處理。
三。終極方法。使用 Selenium和PhantomJS執(zhí)行網(wǎng)頁js代碼,然后再獲取數(shù)據(jù),這種方法100%可以獲取數(shù)據(jù),確定就是速度太慢。
最好的方法就是使用selenium這種庫哦。簡單介紹一下selenium,這本身是一種網(wǎng)站自動(dòng)測試的庫,所以可以模擬用戶的所有交互行為,包括輸入、點(diǎn)擊、拖拉、滾動(dòng)等等和用戶完全相同的操作,所以也和真正打開網(wǎng)頁一樣,可以響應(yīng)Javascript的行為,可以加載JS異步加載的網(wǎng)頁。selenium最好配合PhantomJS使用,這樣就沒有界面,完全自動(dòng)處理哦。
1、打開pycharm開發(fā)工具,點(diǎn)擊File菜單,選擇Settings...,進(jìn)行第三方模塊安裝;輸入selenium,點(diǎn)擊Install Package。
2、接著在python項(xiàng)目的指定文件夾下,鼠標(biāo)右鍵新建python文件,輸入文件名并點(diǎn)擊Python file。
3、打開新建的文件,依次導(dǎo)入selenium、webdriver和time。
4、調(diào)用webdriver模塊中的Chrome(),使用get()獲取對應(yīng)網(wǎng)址的內(nèi)容。
5、調(diào)用find_element_by_id()獲取對應(yīng)頁面元素,然后調(diào)用按鈕點(diǎn)擊事件。
6、修改get()方法中的請求路徑,然后保存代碼并運(yùn)行文件,查看運(yùn)行結(jié)果。