用 Python 寫了一個PDF轉換器,以後再也不用花錢轉了
前言
想必小夥伴都經歷過,當你想要把PDF轉為WORD時,幾行大字赫然甩在你眼前:
用 Python 寫了一個PDF轉換器,以後再也不用花錢轉了
不充錢就想白嫖??想得美~
然而,博主是不會退縮的,畢竟迎難而上是傳統美德。於是,今天的主題出來了:用python寫一個PDF轉WORD的小工具(基於某網站介面)。
一、思路分析
網上一搜,你可以發現很多PDF轉換的工具,其中不乏線上轉換的網站,比如這樣的:
用 Python 寫了一個PDF轉換器,以後再也不用花錢轉了
那麼,通過網站提供的測試介面,我們便可以通過爬蟲模擬的方式實現轉換。
沒有錯了~思路就是如此的簡單明瞭,今天的主角便是:
https://app.xunjiepdf.com
通過抓包分析,知道這是一個POST請求,接下來用requests庫模擬即可。
需要注意的是,這個介面僅用於測試,所以可供轉換的頁面等都有所限制,如需更完整的功能還請支援原版。
二、我的程式碼
正所謂一萬個coders,就有一萬種codes,以下為我的程式碼,僅供參考。
匯入相關庫:
import time
import requests
定義PDF2Word類:
#2020最新python學習資源分享:1156465813
class PDF2Word():
def init(self):
self.machineid = ‘ccc052ee5200088b92342303c4ea9399’
self.token = ‘’
self.guid = ‘’
self.keytag = ‘’
def produceToken(self):
url = 'https://app.xunjiepdf.com/api/producetoken'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'Origin': 'https://app.xunjiepdf.com',
'Connection': 'keep-alive',
'Referer': 'https://app.xunjiepdf.com/pdf2word/',}
data = {'machineid':self.machineid}
res = requests.post(url,headers=headers,data=data)
res_json = res.json()
if res_json['code'] == 10000:
self.token = res_json['token']
self.guid = res_json['guid']
print('成功獲取token')
return True
else:
return False
def uploadPDF(self,filepath):
filename = filepath.split('/')[-1]
files = {'file': open(filepath,'rb')}
url = 'https://app.xunjiepdf.com/api/Upload'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0',
'Accept': '*/*',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Content-Type': 'application/pdf',
'Origin': 'https://app.xunjiepdf.com',
'Connection': 'keep-alive',
'Referer': 'https://app.xunjiepdf.com/pdf2word/',}
params = (
('tasktype', 'pdf2word'),
('phonenumber', ''),
('loginkey', ''),
('machineid', self.machineid),
('token', self.token),
('limitsize', '2048'),
('pdfname', filename),
('queuekey', self.guid),
('uploadtime', ''),
('filecount', '1'),
('fileindex', '1'),
('pagerange', 'all'),
('picturequality', ''),
('outputfileextension', 'docx'),
('picturerotate', '0,undefined'),
('filesequence', '0,undefined'),
('filepwd', ''),
('iconsize', ''),
('picturetoonepdf', ''),
('isshare', '0'),
('softname', 'pdfonlineconverter'),
('softversion', 'V5.0'),
('validpagescount', '20'),
('limituse', '1'),
('filespwdlist', ''),
('fileCountwater', '1'),
('languagefrom', ''),
('languageto', ''),
('cadverchose', ''),
('pictureforecolor', ''),
('picturebackcolor', ''),
('id', 'WU_FILE_1'),
('name', filename),
('type', 'application/pdf'),
('lastModifiedDate', ''),
('size', ''),)
res= requests.post(url,headers=headers,params=params,files=files)
res_json = res.json()
if res_json['message'] == '上傳成功':
self.keytag = res_json['keytag']
print('成功上傳PDF')
return True
else:
return False
def progress(self):
url = 'https://app.xunjiepdf.com/api/Progress'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0',
'Accept': 'text/plain, */*; q=0.01',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'Origin': 'https://app.xunjiepdf.com',
'Connection': 'keep-alive',
'Referer': 'https://app.xunjiepdf.com/pdf2word/',}
data = {
'tasktag': self.keytag,
'phonenumber': '',
'loginkey': '',
'limituse': '1'}
res= requests.post(url,headers=headers,data=data)
res_json = res.json()
if res_json['message'] == '處理成功':
print('PDF處理完成')
return True
else:
print('PDF處理中')
return False
def downloadWord(self,output):
url = 'https://app.xunjiepdf.com/download/fileid/%s'%self.keytag
res = requests.get(url)
with open(output,'wb') as f:
f.write(res.content)
print('PDF下載成功("%s")'%output)
def convertPDF(self,filepath,outpath):
filename = filepath.split('/')[-1]
filename = filename.split('.')[0]+'.docx'
self.produceToken()
self.uploadPDF(filepath)
while True:
res = self.progress()
if res == True:
break
time.sleep(1)
self.downloadWord(outpath+filename)
執行主函式:
if name==‘main’:
pdf2word = PDF2Word()
pdf2word.convertPDF(‘001.pdf’,’’)
注意:convertPDF函式有兩個引數,第一個為需要轉換的PDF,第二個引數為轉換後的目錄。
run一下,一鍵入魂,".docx"檔案已經躺在了我的目錄中,舒服了~
用 Python 寫了一個PDF轉換器,以後再也不用花錢轉了
http://shennizuidongqiu.com
http://feidaotuiqiu.me
http://dazhuokaiche.com
http://fds501.cc
http://fdq602.cc
http://fdw703.cc
http://fdw805.cc
http://fdw907.cc
http://zsn132.cc
http://zsn143.cc
http://zsn243.cc
http://zsn343.cc
http://zsn443.cc
http://zsn543.cc
http://zsn643.cc
http://msk121.cc
http://msk127.cc
http://msk129.cc
http://msk130.cc
http://zdzkc108.cc
http://zdzkc219.cc
http://zdzkc229.cc
http://zdzkc239.cc
http://zdzkc241.cc
http://dddsaa331.cc
http://dddsaa332.cc
http://dddsaa333.cc
http://dddsaa336.cc
http://dddsaa328.cc
相關文章
- Python 寫了一個 PDF 轉換器,以後再也不用花錢轉了Python
- 用Python爬取線上教程轉成PDF,媽媽再也不用擔心我的學習了!Python
- 用Java寫一個PDF,Word檔案轉換工具Java
- 有了Swagger2,再也不用為寫Api文件頭疼了SwaggerAPI
- 6小時影片,一鍵轉成PPT,趙曉卉們再也不用發瘋了
- Mockjs,再也不用追著後端小夥伴要介面了MockJS後端
- 用Python寫個了紅包提醒,再不怕錯過一個億了Python
- PDF批次轉換器,批次轉word為pdf,批次轉ppt為pdf
- PDF轉換器手機版,PPT轉PDF方法
- Cisdem PDF Creator(PDF 生成轉換器)
- 10個實用的資料分析模型,學會思路再也不用啃書了模型
- PDF轉換器在電腦上怎樣使用?PDF轉換器功能有哪些?
- 我在淘寶花5塊錢買了一千個遊戲遊戲
- 再也不用擔心 SSH 斷開了 - tmux 命令UX
- 再也不用擔心蘋果資料誤刪了蘋果
- 智慧打底褲:再也不用擔心尺碼了
- OHEA智慧電動床 以後連床都不用鋪了
- 快速定位無用路由 媽媽再也不用擔心人工排雷了路由
- 用Swing寫了一個Class編輯器:ClassEditor
- aspose word轉換pdf檔案後將pdf檔案轉換為圖片png
- PDF to Word Document Converter Mac(PDF轉Word檔案轉換器)Mac
- 前端有了這兩樣神器,再也不用追著後臺要介面啦前端
- 再也不用擔心網頁編碼的坑了!網頁
- 媽媽再也不用擔心我不會webpack了Web
- 分享:哪個pdf轉換器有識別文字功能
- PDF文件轉換器PDF to Word Document Converter MacMac
- 學了風變程式設計Python後我終於不用加班了!程式設計Python
- Flyingbee PDF to word for Mac(飛蜂pdf轉word轉換器) v2.8啟用版Mac
- 用 Laravel 6 寫了一個部落格Laravel
- pdf轉換成word,非常實用
- 50道Redis面試題史上最全,以後面試再也不怕問Redis了Redis面試題
- 錢,花對地方了嗎?一則工程師的故事工程師
- ppt轉pdf怎麼轉?試試這個轉換技巧!
- ToString()字串轉換你用正確了嗎?字串
- 使用 Python 5 年後,我轉向了 GoPythonGo
- 使用 Python 5 年後,我轉向了GoPythonGo
- 不用任何軟體!PDF轉Word用微信這個功能,簡單又方便!
- 這麼分析大檔案日誌,以後就不用加班捲了!