自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用 Python 寫了一個PDF轉(zhuǎn)換器,以后再也不用花錢轉(zhuǎn)了

開發(fā) 后端
想必小伙伴都經(jīng)歷過,當(dāng)你想要把PDF轉(zhuǎn)為WORD時,自己打字赫赫甩在你眼前。于是,今天的主題出來了:用python寫一個PDF轉(zhuǎn)WORD的小工具(基于某網(wǎng)站接口)。

 

前言

想必小伙伴都經(jīng)歷過,當(dāng)你想要把PDF轉(zhuǎn)為WORD時,自己打字赫赫甩在你眼前:

用 Python 寫了一個PDF轉(zhuǎn)換器,以后再也不用花錢轉(zhuǎn)了

 

不充錢就想白嫖??想得美~

然而,博主是不會退縮的,畢竟迎難而上是傳統(tǒng)美德。于是,今天的主題出來了:用python寫一個PDF轉(zhuǎn)WORD的小工具(基于某網(wǎng)站接口)。

一、思路分析

網(wǎng)上一搜,你可以發(fā)現(xiàn)很多PDF轉(zhuǎn)換的工具,其中不乏在線轉(zhuǎn)換的網(wǎng)站,比如這樣的:

用 Python 寫了一個PDF轉(zhuǎn)換器,以后再也不用花錢轉(zhuǎn)了

 

那么,通過網(wǎng)站提供的測試接口,我們便可以通過爬蟲模擬的方式實現(xiàn)轉(zhuǎn)換。

沒有錯了~思路就是如此的簡單明了,今天的主角便是:

https://app.xunjiepdf.com

通過抓包分析,知道這是一個POST請求,接下來用requests庫模擬即可。

需要注意的是,這個接口僅用于測試,所以可供轉(zhuǎn)換的頁面等都有所限制,如需更完整的功能還請支持原版。

二、我的代碼

正所謂一萬個coders,就有一萬種codes,以下為我的代碼,僅供參考。

導(dǎo)入相關(guān)庫:

  1. import time 
  2. import requests 

定義PDF2Word類:

  1. #2020最新python學(xué)習(xí)資源分享:1156465813 
  2. class PDF2Word(): 
  3.     def __init__(self): 
  4.         self.machineid = 'ccc052ee5200088b92342303c4ea9399' 
  5.         self.token = '' 
  6.         self.guid = '' 
  7.         self.keytag = '' 
  8.      
  9.     def produceToken(self): 
  10.         url = 'https://app.xunjiepdf.com/api/producetoken' 
  11.         headers = { 
  12.                 'User-Agent''Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0'
  13.                 'Accept''application/json, text/javascript, */*; q=0.01'
  14.                 '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'
  15.                 'Content-Type''application/x-www-form-urlencoded; charset=UTF-8'
  16.                 'X-Requested-With''XMLHttpRequest'
  17.                 'Origin''https://app.xunjiepdf.com'
  18.                 'Connection''keep-alive'
  19.                 'Referer''https://app.xunjiepdf.com/pdf2word/',} 
  20.         data = {'machineid':self.machineid} 
  21.         res = requests.post(url,headers=headers,data=data) 
  22.         res_json = res.json() 
  23.         if res_json['code'] == 10000
  24.             self.token = res_json['token'
  25.             self.guid = res_json['guid'
  26.             print('成功獲取token'
  27.             return True 
  28.         else
  29.             return False 
  30.      
  31.     def uploadPDF(self,filepath): 
  32.         filename = filepath.split('/')[-1
  33.         files = {'file': open(filepath,'rb')} 
  34.         url = 'https://app.xunjiepdf.com/api/Upload' 
  35.         headers = { 
  36.                 'User-Agent''Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0'
  37.                 'Accept''*/*'
  38.                 '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'
  39.                 'Content-Type''application/pdf'
  40.                 'Origin''https://app.xunjiepdf.com'
  41.                 'Connection''keep-alive'
  42.                 'Referer''https://app.xunjiepdf.com/pdf2word/',} 
  43.         params = ( 
  44.                 ('tasktype''pdf2word'), 
  45.                 ('phonenumber'''), 
  46.                 ('loginkey'''), 
  47.                 ('machineid', self.machineid), 
  48.                 ('token', self.token), 
  49.                 ('limitsize''2048'), 
  50.                 ('pdfname', filename), 
  51.                 ('queuekey', self.guid), 
  52.                 ('uploadtime'''), 
  53.                 ('filecount''1'), 
  54.                 ('fileindex''1'), 
  55.                 ('pagerange''all'), 
  56.                 ('picturequality'''), 
  57.                 ('outputfileextension''docx'), 
  58.                 ('picturerotate''0,undefined'), 
  59.                 ('filesequence''0,undefined'), 
  60.                 ('filepwd'''), 
  61.                 ('iconsize'''), 
  62.                 ('picturetoonepdf'''), 
  63.                 ('isshare''0'), 
  64.                 ('softname''pdfonlineconverter'), 
  65.                 ('softversion''V5.0'), 
  66.                 ('validpagescount''20'), 
  67.                 ('limituse''1'), 
  68.                 ('filespwdlist'''), 
  69.                 ('fileCountwater''1'), 
  70.                 ('languagefrom'''), 
  71.                 ('languageto'''), 
  72.                 ('cadverchose'''), 
  73.                 ('pictureforecolor'''), 
  74.                 ('picturebackcolor'''), 
  75.                 ('id''WU_FILE_1'), 
  76.                 ('name', filename), 
  77.                 ('type''application/pdf'), 
  78.                 ('lastModifiedDate'''), 
  79.                 ('size'''),) 
  80.         res= requests.post(url,headers=headers,params=params,files=files) 
  81.         res_json = res.json() 
  82.         if res_json['message'] == '上傳成功'
  83.             self.keytag = res_json['keytag'
  84.             print('成功上傳PDF'
  85.             return True 
  86.         else
  87.             return False 
  88.          
  89.     def progress(self): 
  90.         url = 'https://app.xunjiepdf.com/api/Progress' 
  91.         headers = { 
  92.                 'User-Agent''Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0'
  93.                 'Accept''text/plain, */*; q=0.01'
  94.                 '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'
  95.                 'Content-Type''application/x-www-form-urlencoded; charset=UTF-8'
  96.                 'X-Requested-With''XMLHttpRequest'
  97.                 'Origin''https://app.xunjiepdf.com'
  98.                 'Connection''keep-alive'
  99.                 'Referer''https://app.xunjiepdf.com/pdf2word/',} 
  100.         data = { 
  101.               'tasktag': self.keytag, 
  102.               'phonenumber'''
  103.               'loginkey'''
  104.               'limituse''1'
  105.         res= requests.post(url,headers=headers,data=data) 
  106.         res_json = res.json() 
  107.         if res_json['message'] == '處理成功'
  108.             print('PDF處理完成'
  109.             return True 
  110.         else
  111.             print('PDF處理中'
  112.             return False 
  113.          
  114.     def downloadWord(self,output): 
  115.         url = 'https://app.xunjiepdf.com/download/fileid/%s'%self.keytag 
  116.         res = requests.get(url) 
  117.         with open(output,'wb') as f: 
  118.             f.write(res.content) 
  119.             print('PDF下載成功("%s")'%output) 
  120.              
  121.     def convertPDF(self,filepath,outpath): 
  122.         filename = filepath.split('/')[-1
  123.         filename = filename.split('.')[0]+'.docx' 
  124.         self.produceToken() 
  125.         self.uploadPDF(filepath) 
  126.         while True: 
  127.             res = self.progress() 
  128.             if res == True: 
  129.                 break 
  130.             time.sleep(1
  131.         self.downloadWord(outpath+filename) 

執(zhí)行主函數(shù):

  1. if __name__=='__main__':     
  2.     pdf2word = PDF2Word() 
  3.     pdf2word.convertPDF('001.pdf',''

注意:convertPDF函數(shù)有兩個參數(shù),第一個為需要轉(zhuǎn)換的PDF,第二個參數(shù)為轉(zhuǎn)換后的目錄。
run一下,一鍵入魂,".docx"文件已經(jīng)躺在了我的目錄中,舒服了~

用 Python 寫了一個PDF轉(zhuǎn)換器,以后再也不用花錢轉(zhuǎn)了

 

 

責(zé)任編輯:張燕妮 來源: 今日頭條
相關(guān)推薦

2021-01-07 20:45:06

Firefox 85Firefox瀏覽器

2021-12-21 09:05:46

命令Linux敲錯

2022-03-24 07:57:58

Python水果忍者游戲

2024-04-15 00:08:00

MySQLInnoDB數(shù)據(jù)庫

2022-09-15 15:31:50

AndroidHTTPS抓包

2021-03-06 18:00:38

谷歌Chrome瀏覽器

2024-01-26 07:00:11

Python工具無向圖

2015-10-22 10:38:43

Wi-Fi燃氣報警器

2020-04-29 12:11:52

MystiQ音視頻轉(zhuǎn)換器開源

2021-06-08 07:48:26

數(shù)據(jù) Python開發(fā)

2015-05-29 09:01:48

2020-06-15 08:03:17

大文件OOM內(nèi)存

2020-04-10 09:55:28

Git 工具黑魔法

2018-10-11 15:51:32

ChromeGoogle瀏覽器

2023-11-27 17:11:02

數(shù)據(jù)庫oracle

2020-10-29 15:17:49

代碼開發(fā)工具

2024-08-26 00:01:00

前端性能優(yōu)化

2020-05-07 09:05:22

電腦Python代碼

2022-09-30 13:55:46

Python機器人
點贊
收藏

51CTO技術(shù)棧公眾號