哈嘍兄弟們 我們平常需要下載文檔的時候,是不是發現,要麼不能下載,要麼不能複製,就能難受。 常見的文檔網站很多,但是這裡就不一一說名字了,emmm 那麼我們今天來分享一下,如何用Python將這些不給下載的文檔給批量下載下來。 你需要準備 開發環境 python 3.8 pycharm 模塊使用 兩 ...
哈嘍兄弟們
我們平常需要下載文檔的時候,是不是發現,要麼不能下載,要麼不能複製,就能難受。
常見的文檔網站很多,但是這裡就不一一說名字了,emmm
那麼我們今天來分享一下,如何用Python將這些不給下載的文檔給批量下載下來。
你需要準備
開發環境
python 3.8
pycharm
模塊使用
兩個需要安裝的第三方模塊,安裝命令也寫出來了。
requests --> pip install requests
re
base64
docx --> pip install python-docx
本文實現思路
一、數據來源分析
- 明確需求
明確採集網址以及數據內容是什麼?
網址: https://www.docin.com/p-3282300896.html
數據: 文檔內容 - 抓包分析, 我們需要數據內容是可以請求那個鏈接能夠得到
文檔形式: 圖片樣式
通過瀏覽器自帶工具: 開發者工具抓包
打開開發者工具: F12 / 右鍵點擊檢查選擇network
刷新網頁
開發者工具搜索: docinpic
文檔圖片數據
鏈接: http://221.122.117.73/docinpic.jsp
sid: P1ekRarOT5ID*deCCfQPHapgA9Z5X3NNn0xfBxPIDApUnSY9yIVtfuxey1BsO1BG <獲取>
file: 文檔ID <可以自己獲取>
width: 圖片解析度
pageno: 頁碼 <可以用for迴圈>
二、代碼實現步驟
- 發送請求, 模擬瀏覽器對於 文檔頁面url地址 發送請求
請求鏈接: https://www.docin.com/p-3282300896.html - 獲取數據, 獲取伺服器返迴響應數據
- 解析數據, 提取我們需要的內容:
sid參數 / 文檔頁數 / 文檔名稱
構建文檔圖片鏈接 - 保存數據, 把文檔圖片內容保存下來
通過文字識別, 把圖片裡面文字識別出來, 保存文檔裡面就可以了
會使用百度雲API介面:
1. 註冊登陸百度雲API
2. 選擇文字識別, 創建應用, 領取免費資源, 點擊技術文檔
3. 先獲取token值
4. API調用的文檔代碼
代碼展示
文字識別
doc = Document() def Content(content): url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=xxxx&client_secret=xxxx" payload = "" headers = { 'Content-Type': 'application/json', 'Accept': 'application/json' } response = requests.request("POST", url, headers=headers, data=payload) access_token = response.json()['access_token'] request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic" # 二進位方式打開圖片文件 # 完整源碼和視頻講解都打包好 # 放在這個Q裙了:708525271 # f = open('img\\1 電腦概述1.jpg', 'rb') img = base64.b64encode(content) params = {"image":img} request_url = request_url + "?access_token=" + access_token headers = {'content-type': 'application/x-www-form-urlencoded'} json_data = requests.post(request_url, data=params, headers=headers).json() words_result = '\n'.join([i['words'] for i in json_data['words_result']]) print(words_result)
發送請求
# 模擬瀏覽器 --> 字典數據類型 --> 鍵:值 headers = { # User-Agent 用戶代理 表示瀏覽器基本身份信息 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } # 請求鏈接 url = 'https://www.docin.com/p-3282300896.html' # 發送請求 response = requests.get(url=url, headers=headers)
獲取數據、解析數據
# 獲取網頁數據 html_data = response.text # 提取sid參數 sid = re.findall('flash_param_hzq:"(.*?)",', html_data)[0] # 提取名字 name = re.findall('productName:"(.*?)",', html_data)[0] # 提取頁碼 num = re.findall('<em>(\d+)</em>頁</span>', html_data)[0] # 構建完整圖片鏈接 content_list = [] for page in range(1, int(num)+1): # 字元串格式化方法 img = f'http://221.122.117.73/docinpic.jsp?sid={sid}&file=3282300896&width=942&pageno={page}'
保存數據, 把文檔圖片內容保存下來
# 發送請求, 獲取二進位數據<圖片內容> img_content = requests.get(url=img, headers=headers).content words = Content(img_content) doc.add_paragraph(words)
完整代碼+視頻步驟詳解全部都打包好了,文末名片自己拿哦!
好了,今天的分享就到這結束了,下次見!