學(xué)習(xí)通小工具-下載pptpdf以及視頻_第1頁(yè)
學(xué)習(xí)通小工具-下載pptpdf以及視頻_第2頁(yè)
學(xué)習(xí)通小工具-下載pptpdf以及視頻_第3頁(yè)
學(xué)習(xí)通小工具-下載pptpdf以及視頻_第4頁(yè)
學(xué)習(xí)通小工具-下載pptpdf以及視頻_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

學(xué)習(xí)通??具——下載pptpdf以及視頻(做完后,突然發(fā)現(xiàn)之前寫的那篇好傻。。。感覺(jué)?做了,不過(guò)也算是學(xué)會(huì)了?種?動(dòng)建ppt的?法吧)(ps:ppt/pdf_id可以直接把任?章節(jié)ppt中的任?圖?拖到瀏覽器上?由新標(biāo)簽頁(yè)打開(kāi),最長(zhǎng)的那?串就是了)強(qiáng)?偷懶直接返回下載url,沒(méi)給使?者直接下載在本地。(?向??)?動(dòng)滑稽。有時(shí)間補(bǔ)坑吧。。。就先做出這樣吧:ps:最近互聯(lián)?+項(xiàng)?初步搞完了等著審核,就打算把之前學(xué)習(xí)通的坑填了,準(zhǔn)備做個(gè)可視化的??具;輸?課程的url就可以下載ppt/pdf和mp4了。(起初我是沒(méi)想到爬視頻的)最開(kāi)始的設(shè)計(jì)思想是,把該課程的全部?jī)?nèi)容爬下來(lái)。所以?先是想把全部的url爬取下來(lái)。后來(lái)發(fā)現(xiàn)做??具,是給別??的,別???傳url就可以了誒。然后就把之前寫的全刪了。(ps:不過(guò)寫的時(shí)候突然發(fā)現(xiàn)也可以爬,爬了之后提供給使?者?個(gè)csv更?便傳url)然后接下來(lái),就是這個(gè)?站的奇葩之處了。因?yàn)?先需要使?者傳?url,所以使?者點(diǎn)擊課程進(jìn)去后,復(fù)制url再傳?。然后全部做完后,我傳?url測(cè)試時(shí),發(fā)現(xiàn)傳回的結(jié)果都是?樣的。仔細(xì)?看才發(fā)現(xiàn),進(jìn)?章節(jié)后,更換章節(jié)url不會(huì)變化。:666全部都是動(dòng)態(tài)加載出來(lái)的~?吧,然后我將錯(cuò)就錯(cuò),打算給使?者?個(gè)差的體驗(yàn)(?動(dòng)滑稽),因?yàn)槟銖漠?dāng)前章節(jié)返回再進(jìn)?你想進(jìn)的章節(jié)url是會(huì)變化的。(到時(shí)候給?戶個(gè)說(shuō)明就?了哈哈)那么我先爬ppt吧,but…沒(méi)辦法,觀察下圖?的url:前?三串沒(méi)看出什么東西,這么長(zhǎng)?坨感覺(jué)才是關(guān)鍵。(起初我也只是有很?感覺(jué),后來(lái)也確實(shí)如此)然后只有進(jìn)?search?法了,在Elements中search上?“長(zhǎng)長(zhǎng)的?串”:"1of4"已經(jīng)get到了想要的東西了;但是我接著往下按的時(shí)候。沒(méi)錯(cuò),得到了新的objectid,也就是視頻MP4的objectid。也許看到這?有點(diǎn)蒙?也許會(huì)問(wèn)為什么需要這個(gè)objectid呢?接下來(lái)就知道了。在Network中,我們同樣搜索上?的objectid可以看下列結(jié)果,第?個(gè)便是結(jié)果。后兩個(gè)是加載pdf的圖?。取出下?的下載鏈接那么接下來(lái)就是如何爬取這兩個(gè)id呢?(ps:其實(shí)并不?定是兩個(gè)id,萬(wàn)?只有mp4沒(méi)有pdf/ppt,或者只有ppt/pdf沒(méi)有mp4呢,所以爬取時(shí),也需要進(jìn)?判斷。)根據(jù)前?獲得mp4_objectid那?,可以知道那?就是關(guān)鍵。如果爬取下來(lái),既然不會(huì)動(dòng)態(tài)爬取,那么就獲取到相應(yīng)的Response后,正則爬取下來(lái)吧。那么這個(gè)Response在哪?呢,既然是動(dòng)態(tài)加載的,那么肯定有相應(yīng)的“指向”。所以依舊search?法,屢試不爽。那么這次search什么呢?根據(jù)最開(kāi)始的url,可以知道是有三個(gè)關(guān)鍵性ID的。如下:我們返回,再打開(kāi)另?個(gè)章節(jié),看看哪個(gè)id變化了。(最開(kāi)始我點(diǎn)的是同?章的內(nèi)容,發(fā)現(xiàn)是chapterID變化了;這?我點(diǎn)了不同章,看看會(huì)不會(huì)有?的變化)果然還是?樣的,印證了想法:只有chapterID變化了。所以我們?cè)贜etwork中search?下它。得到兩個(gè)有?的反饋。第?個(gè)很明顯是加載章節(jié)?錄標(biāo)題的靜態(tài)?頁(yè),可以?xpath全部獲取到。第?個(gè)則需要細(xì)?觀察。preview是空的,我們看看Response往下翻,就可以看到前?獲得mp4_objectID的地?了。(這?段其實(shí)查看框架的源代碼也能夠看到,所以實(shí)際上,并不復(fù)雜)打開(kāi)后,也可以看到相應(yīng)部分。接下來(lái),事情就很簡(jiǎn)單了。獲取Response后,正則爬取下來(lái)。所以真正的url是:(其實(shí)直接查看框架源代碼就有的url)正則取id以及判斷章節(jié)含有哪些內(nèi)容:file_id=re.findall('"objectid":"(.*?)"',res.text)total_len=len(file_id)file_name=re.findall('"name":"(.*?)"',res.text)#進(jìn)?判斷是否有MP4/pdfiftotal_len==2:mp4_id=file_id[0]ppt_id=file_id[1]mp4_name=file_name[0]ppt_name=file_name[1]print(mp4_name+""+mp4_id,ppt_name+""+ppt_id)elif".pdf"inres.textand".ppt"inres.text:ppt_id=file_id[0]ppt_name=file_name[0]print(ppt_name+""+ppt_id)else:mp4_id=file_id[0]mp4_name=file_name[0]print(mp4_name+""+mp4_id)得到結(jié)果DSP1-1DSP技術(shù)的基本概念.mp4169e68aa4122f842d4512d61dbe7921cDSP第1章1.1(1).pdf8418560aa9ce42b0c5de0cab8ebe89f1故得到了我們想要的結(jié)果。接下來(lái)就是如何通過(guò)傳?的url取得所需要的id呢?所以根據(jù)上?的url其實(shí)已經(jīng)可以猜到了。chapterID=knowledgeID所以?戶傳?的url,取出三個(gè)ID,把真正的url格式化。就可以了url="/mycourse/studentstudy?chapterId=168298554&courseId=201678582&clazzid=4176672&enc=875ecd40b025e42e40e8f851e6d05756"pat1='clazzid=(.*?)&'pat2="courseId=(.*?)&"pat3="chapterId=(.*?)&"#pat2="c(.*?)id"#clazzid=re.match(pat1,url)clazzid="".join(re.findall(pat1,url))courseid="".join(re.findall(pat2,url))knowledgeid="".join(re.findall(pat3,url))real_url="/knowledge/cards?clazzid={0}&courseid={1}&knowledgeid={2}".format(clazzid,courseid,knowledgeid)print(real_url)得到結(jié)果/knowledge/cards?clazzid=4176672&courseid=201678582&knowledgeid=168298554下載就?個(gè)函數(shù)mp4_url="/download/{0}".format(mp4_id)ppt_url="/download/{0}".format(ppt_id)##headers記得加ppt_res=requests.get(ppt_url,headers=headers)mp4_res=requests.get(mp4_url,headers=headers)##這?試驗(yàn)?下ppt的下載withopen(ppt_name,"wb")asf:f.write(ppt_res.content)print("下載完成")f.close()接下來(lái)就是如何做成可視化的(感興趣的?伙伴可以學(xué)習(xí)下tkinter)做完后,我發(fā)現(xiàn)還需要?個(gè)登錄UI…畢竟是要cookies的(補(bǔ)坑補(bǔ)坑)有時(shí)間更新中。。。抽時(shí)間更新?下吧,給個(gè)傳?cookies的輸?框。直接傳?鏈接,不傳?cookies則彈出“越權(quán)”。(但是每次都要傳?cookies還是很?煩,將cookies保存在本地,每次點(diǎn)擊讀取就更?便了)=,=不過(guò)這個(gè)我不會(huì),其實(shí)是失敗了,感興趣的?伙伴們可以百度下這??的知識(shí)。這?作判斷,傳?cookies授權(quán)以及url是否正確##之前的下載不變##這?作判斷是否傳?cookies以及url是否正確except:res=requests.get(url,headers=headers)dom=etree.HTML(res.content)title=dom.xpath('//*[@id="body_0x003"]/h2/text()')iftitle:showerror("越權(quán)","請(qǐng)先登錄")else:showerror("錯(cuò)誤","請(qǐng)輸?正確完整的章節(jié)url")最后還是直接附上download吧defdownload():cookies=entry0.get().strip()headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3987.122Safari/537.36','Cookie':cookies}url=entry1.get().strip()try:#url="/mycourse/studentstudy?chapterId=168298554&courseId=201678582&clazzid=4176672&enc=875ecd40b025e42e40e8f851e6d05756"pat1='clazzid=(.*?)&'pat2="courseId=(.*?)&"pat3="chapterId=(.*?)&"#pat2="c(.*?)id"#clazzid=re.match(pat1,url)clazzid="".join(re.findall(pat1,url))courseid="".join(re.findall(pat2,url))knowledgeid="".join(re.findall(pat3,url))real_url="/knowledge/cards?clazzid={0}&courseid={1}&knowledgeid={2}".format(clazzid,courseid,knowledgeid)res=requests.get(real_url,headers=headers)'''mp4_url="/download/{0}".format(mp4_id)ppt_url="/download/{0}".format(ppt_id)##記得加headersppt_res=requests.get(ppt_url,headers=headers)mp4_res=requests.get(mp4_url,headers=headers)withopen(ppt_name,"wb")asf:f.write(ppt_res.content)print("下載完成")'''file_id=re.findall('"objectid":"(.*?)"',res.text)total_len=len(file_id)file_name=re.findall('"name":"(.*?)"',res.text)iftotal_len==2:mp4_id=file_id[0]ppt_id=file_id[1]mp4_name=file_name[0]ppt_name=file_name[1]#print(mp4_name+""+mp4_id,ppt_name+""+ppt_id)mp4_url="/download/{0}".format(mp4_id)ppt_url="/download/{0}".format(ppt_id)input_parm.set(mp4_url)input_parm1.set(ppt_url)elif".pdf"inres.textand".ppt"inres.text:ppt_id=file_id[0]ppt_name=file_name[0]#print(ppt_name+""+ppt_id)ppt_url="/download/{0}".format(ppt_id)input_parm1.set(ppt_url)input_parm.set("?MP4資源")else:mp4_id=file_id[0]mp4_name=file_name[0]mp4_url="/download/{0}"

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論