python可以下載百度文庫_不用下載券也能下載百度文庫資料,Python幫你輕松搞定...

大家可能平時都有在百度文庫下載文檔的經歷,費盡心思好不容易在文庫找了一份可以用的資料,一看需要用下載券下載,搞的人很煩。

有的人為了節省時間,就任性辦理了個文庫VIP,再也不用糾結怎么下文檔了。如果你是一個百度文庫的重度用戶,這樣做當然沒問題了。

但有些學生黨、上班族,他們可能只是為了交個作業,做一個產品匯報的PPT等等,對這部分人群再去辦理VIP,我覺得沒必要,畢竟掙錢也不容易,咱能省就省。

有的人會說,我會選擇去某寶買下載券,需要用的時候,用賣家給的賬戶和密碼下載就可以了,這個方法我也用過,不過隨著百度文庫不斷修復漏洞,一些賣家的賬戶和密碼,很快就會失效,這也不是一個長久之計。

當然除了我上面說的這些方法外,還有一些其他的神操作,比如,自己一點點去復雜粘貼、放到手機版的百度文庫APP里,再另存為文章、或者用眾所周知的“冰點文庫”……

在我看來,這些都不是最優的解決方案,我今天就和大家分享一個我自己用Python寫的百度文庫免下載券的小項目。當然,這個項目主要是用來學習Python爬蟲的,如果有任何侵權嫌疑,請聯系我刪除!

2abd0669bb3a

1.優點

不僅可以下載word文檔,而且能下載PPT;

可以下載一個完整的文檔;

不需要用一些某寶賣家的漏洞網址。

2.準備工作

(1)本次程序主要用到了火狐瀏覽器的selenium,大家可以在下面網址下載自己火狐瀏覽器對應的驅動geckodriver。下載地址:https://github.com/mozilla/geckodriver/releases/

下載解壓后,將geckodriver.exe安裝在Python的安裝目錄Scripts里面,之后就可以正常使用了。

(2)因為本次項目還涉及到了PPT文檔的下載,所以,如果你沒安裝pptx模塊,需要在命令行輸入pip3 installpython-pptx提前安裝好。

3.PPT文檔下載

首先我們隨便找一個需要下載券的PPT文檔,本文以https://wenku.baidu.com/view/a132c661eef9aef8941ea76e58fafab069dc443d.html?rec_flag=default&sxts=1570202117357為例,打開開發者工具,對文檔中圖片進行分析,如下圖所示:

2abd0669bb3a

圖片保存在標簽為div里面,所以寫代碼時首先需要找到這個標簽,然后再把圖片的url提取出來,同時,提取url時還要注意,有的屬性是“src”,有的是“data-src”,不然就會出現文檔丟失。主要代碼如下:

2abd0669bb3a

4.下載圖片

提取到圖片的url后,就可以下載所有的圖片,并以pictures命名保存在指定的路徑下。代碼如下:

2abd0669bb3a

5.組合成PPT

此時需要將上面下載好的圖片,利用編寫的函數重新合成ppt,這里就要用到剛才提前準備好的生成PPT需要的包,此外,為了保證程序順利運行,還需要一個ppt模板,這個模板里面只有一個圖片的占位,主要是為了讓所有圖片安裝模板來創建成新的幻燈片。代碼如下:

2abd0669bb3a

6.word文檔下載

關于文檔下載,本文以https://wenku.baidu.com/view/1b5ee5dbad51f01dc281f13e.html?sxts=1570243034873為例。

主要難點是當頁數過多時,會出現“繼續閱讀”的字樣,此時需要selenium模擬人去自動點擊,所以,需要提取找到“繼續閱讀”的按鈕;另外,還要獲取文檔的下載總頁碼,最后還需要對提取的文本進行分段整理。

(1)、尋找“繼續閱讀”位置

本文主要用到了正則表達式,以及js語法。首先要找到繼續閱讀的位置,如下圖所示:

2abd0669bb3a

(2)、獲取總頁數

要獲取整個文檔,首先要找到文檔的總頁數,在下圖中找到保存總頁數的標簽。

2abd0669bb3a

還要分析文檔中的文字保存在哪個標簽,如下圖所示:

2abd0669bb3a

可以看到,文字主要保存在p標簽里,我們找到相應的p標簽,然后遍歷每一頁,提取文字。最后,還要設置一個判斷變量,因為提取的文字會有很多行,有的是一個段的,有的不是一段的文字,這里需要處理一下,主要代碼如下:

2abd0669bb3a

7.寫入文檔

將下載好的文檔,以特定的名字寫入新的文檔,這里沒什么難度,代碼如下:

2abd0669bb3a

8.結果展示

(1)、PPT下載

2abd0669bb3a

2abd0669bb3a

(2)、word下載

2abd0669bb3a

2abd0669bb3a

總結

今天分享的這個用百度文庫免下載券的實戰項目,主要用自動化測試工具selenium,可以幫助大家獲取一些付費的學習資料,大家不用再去某寶買下載券,或者辦VIP了,如果有感興趣的小伙伴,后臺回復「文庫」即可獲得項目源代碼。

最后,再次聲明,本次項目主要用來學習Python爬蟲,不能拿來商用,本人概不承擔所有法律責任,如果有侵權,請聯系作者,我馬上刪除。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374389.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374389.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374389.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

將對象映射到多個XML模式–天氣示例

我已經在EclipseLink JAXB(MOXy)的XmlPath和外部綁定文件擴展中撰寫了以前的文章。 在本文中,我將通過將單個對象模型映射到兩個不同的XML模式來演示這些擴展的功能。 為了使示例更加“真實”,XML數據將來自提供天氣信息的兩種不同…

STM32F1筆記(九)通用定時器

STM32F1的定時器分為TIME1/8等高級定時器,TIME2~5等通用定時器,TIME6/7基本定時器。三者的區別主要參考《STM32中文參考手冊》里特性的每種定時器主要特性的異同。 先看中文手冊中通用定時器的簡介: 通用定時器的寄存器有一個比較有趣的地方…

佳能MP258的5200錯誤和P08代碼解決方法及清零方法

參考文章轉載于:https://www.cnblogs.com/arcer/p/5659624.html

tomcat通過conf-Catalina-localhost目錄發布項目詳解

轉自:http://www.cnblogs.com/iyangyuan/p/3316444.html,感謝 楊元。 Tomcat發布項目的方式大致有三種,但小菜認為通過在tomcat的conf/Catalina/localhost目錄下添加配置文件,來發布項目,是最佳選擇。 因為這樣對tomca…

c++保存圖標到dll_自動保存郵件附件至指定文件夾

最近有個需求,ERP系統會自動發很多csv附件到我郵箱,我需要把這些附件上傳到FTP服務器,服務器會把這些csv的數據寫到另外一個系統的數據庫。每次大概有30個郵件,每個郵件有一個附件,而且附件的名字都一樣,是…

有時在Java中,一個布局管理器是不夠的

在開發Java Swing應用程序時,最經常的是,我們需要在多個嵌套面板中使用多個布局管理器。 通常這不是問題,并且被認為是幾乎所有人類已知語言的所有UI開發的常規做法。 但是,大多數情況下,對于UI中的每個面板&#xff0…

VM克隆之后啟動eth0找不到eth0:unknown interface:no such device

問題出現:VMware 克隆之后,ifconfig命令執行找不到eth0,報錯 eth0:unknown interface:no such device 是因為/etc/sysconf/network-scripts/ifcfg-eth0配置復制過來和虛擬主機的網卡Mac等信息不匹配 解決方法; 刪除/etc/udev/rules.d/70-pers…

“精彩極了”和“糟糕透了”

雖然已經是25歲,但是對小學的一篇課文依然記憶尤新,《“精彩極了”和“糟糕透了”》。 課文正文 記得七八歲的時候,我寫了第一首詩。母親一念完那首詩,眼睛亮亮的,興奮地嚷著:“巴迪,真是你寫的…

python中print的用法_Python中print函數簡單使用總結

Python中print函數簡單使用總結 print函數是Python的入門,每一個學習python的人都繞不開這個函數,下面介紹一下這個函數的用法。 打開電腦,選擇python軟件,下面選擇python 3.7為例進行介紹,點擊python 3.7,…

STM32F1筆記(十)PWM

PWM:Pulse Width Modulation,脈沖寬度調制。是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術。簡單來說就是對脈沖寬度的控制。 在《STM32中文參考手冊》里可以看到 占空比:占空比是指在一個脈沖循環內,通電時…

從GlassFish 3.x擴展到WebLogic 12c Server

Oracle針對GlassFish服務器的策略的主要目標之一是“與Fusion Middleware and Products集成”(來源: Community Roadmap,2010年5月 )。 在今年早些時候,您聽到了很多關于兩臺服務器合而為一的恐懼和謠言。 看到這兩種產…

移動互聯網時代:如何讓女孩愛上你在一分鐘內?

部分《移動互聯網時代:讓女孩愛上你在一分鐘內》其實我只是做原來的盲目思想有移動互聯網的自主知識產權,他沒有詳細說明如何真正讓女孩愛上你在一分鐘內?在真實生活中,預期也沒有那么簡單,易于,畢竟&#…

hashset去重原理_基于simhash的文本去重原理

互聯網網頁存在著大量重復內容,必須有一套高效的去重算法,否則爬蟲將做非常多的無用功,工作時效性無法得到保證,更重要的是用戶體驗也不好。業界關于文本指紋去重的算法眾多,如 k-shingle 算法、google 提出的simhash …

解決express video 手機無法播放的問題

http://stackoverflow.com/questions/24976123/streaming-a-video-file-to-an-html5-video-player-with-node-js-so-that-the-video-c 項目地址 https://github.com/shenggen1987/mp4-demo express index.jade extends layoutblock contenth1 titlep Welcome to #{title}vid…

STM32F1筆記(十一)ADC

查看《STM32中文參考手冊》里ADC的介紹和特性 STM32的ADC最大轉換速率為1Mhz,即1us,在ADCCLK14M,采樣周期為1.5個ADC時鐘下得到。當ADC的時鐘超過14M時,將導致結果準確度下降。 規則通道相當于正常運行的程序。注入通道就相當于中…

使用JPA和Spring 3.1進行事務配置

1.概述 本教程將討論配置Spring Transactions ,使用Transactional批注和常見陷阱的正確方法 。 要更深入地討論核心持久性配置,請查看Spring with JPA教程 。 有兩種不同的配置事務的方法– 批注和AOP –每種都有自己的優勢–我們將在這里討論更常見的…

java epoll select_字節跳動高頻面試題,操作系統/算法/Java等。

字節跳動# Java▲ 20 Java 中垃圾回收機制中如何判斷對象需要回收?常見的 GC 回收算法有哪些?▲ 18 synchronized 關鍵字底層是如何實現的?它與 Lock 相比優缺點分別是什么?▲ 17 hashmap 和 hashtable 的區別是什么?▲…

Xamarin Android項目運行失敗

Xamarin Android項目運行失敗 錯誤信息:Build Failed: MonoDroid does not support running the previous version. Please ensure your solution builds before running or debugging it.這是由于由于項目生成失敗,并找不到以前編譯的結果。這時&#…

STM32F1筆記(十二)DAC

先看《STM32中文參考手冊》中DAC的介紹 引腳的定義與ADC類似 這里需要留意手冊提供的注意,DAC應該是輸出,但是GPIO初始化配置時卻要設置為模擬輸入。 DAC配置示例 void DAC_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;DAC_InitTypeDef DAC_Init…

有關為舊版代碼創建存根的更多信息–測試技術7

在上一個博客中 ,我談到了如何處理行為不佳的不可測試的 (1) SitePropertiesManager 類,以及如何通過提取接口來創建存根。 但是,如果由于舊類的源代碼已被鎖定在第三方JAR文件中而無法訪問它,會發生什么情…