Python采集某網(wǎng)站文檔并保存word格式的示例
準備工作
今天來分享一下,如何用Python將這些不給下載的文檔給批量下載下來。
開發(fā)環(huán)境
python 3.8
pycharm
模塊使用
兩個需要安裝的第三方模塊,安裝命令也寫出來了。
requests --> pip install requests re base64 docx --> pip install python-docx
實現(xiàn)思路
一、數(shù)據(jù)來源分析
1.明確需求
明確采集網(wǎng)址以及數(shù)據(jù)內(nèi)容是什么?
網(wǎng)址: https://www.***.com/p-3282300896.html
數(shù)據(jù): 文檔內(nèi)容
2.抓包分析
我們需要數(shù)據(jù)內(nèi)容是可以請求那個鏈接能夠得到
文檔形式: 圖片樣式
通過瀏覽器自帶工具: 開發(fā)者工具抓包
打開開發(fā)者工具: F12 / 右鍵點擊檢查選擇network
刷新網(wǎng)頁
開發(fā)者工具搜索: docinpic
文檔圖片數(shù)據(jù)
鏈接: http://221.122.117.73/docinpic.jsp
sid: P1ekRarOT5ID*deCCfQPHapgA9Z5X3NNn0xfBxPIDApUnSY9yIVtfuxey1BsO1BG <獲取>
file: 文檔ID <可以自己獲取>
width: 圖片分辨率
pageno: 頁碼 <可以用for循環(huán)>
二、代碼實現(xiàn)步驟
- 發(fā)送請求, 模擬瀏覽器對于 文檔頁面url地址 發(fā)送請求
請求鏈接: https://www.***.com/p-3282300896.html - 獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)
- 解析數(shù)據(jù), 提取我們需要的內(nèi)容:
sid參數(shù) / 文檔頁數(shù) / 文檔名稱
構(gòu)建文檔圖片鏈接 - 保存數(shù)據(jù), 把文檔圖片內(nèi)容保存下來
通過文字識別, 把圖片里面文字識別出來, 保存文檔里面就可以了
使用百度云API接口:
1. 注冊登陸百度云API
2. 選擇文字識別, 創(chuàng)建應(yīng)用, 領(lǐng)取免費資源, 點擊技術(shù)文檔
3. 先獲取token值
4. API調(diào)用的文檔代碼
代碼展示
文字識別
doc = Document() def Content(content): url = "https://a***.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://***.com/rest/2.0/ocr/v1/accurate_basic" # 二進制方式打開圖片文件 # 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)
發(fā)送請求
# 模擬瀏覽器 --> 字典數(shù)據(jù)類型 --> 鍵:值 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.***.com/p-3282300896.html' # 發(fā)送請求 response = requests.get(url=url, headers=headers)
獲取數(shù)據(jù)、解析數(shù)據(jù)
# 獲取網(wǎng)頁數(shù)據(jù) html_data = response.text # 提取sid參數(shù) 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] # 構(gòu)建完整圖片鏈接 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}'
保存數(shù)據(jù), 把文檔圖片內(nèi)容保存下來
# 發(fā)送請求, 獲取二進制數(shù)據(jù)<圖片內(nèi)容> img_content = requests.get(url=img, headers=headers).content words = Content(img_content) doc.add_paragraph(words)
到此這篇關(guān)于Python采集某網(wǎng)站文檔并保存word格式的示例的文章就介紹到這了,更多相關(guān)Python采集網(wǎng)站文檔保存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python使用for循環(huán)和海龜繪圖實現(xiàn)漂亮螺旋線
這篇文章主要為大家介紹了python使用for循環(huán)和海龜繪圖實現(xiàn)漂亮螺旋線實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06Python高級特性——詳解多維數(shù)組切片(Slice)
今天小編就為大家分享一篇Python高級特性——詳解多維數(shù)組切片(Slice),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11利用python將圖片轉(zhuǎn)換成excel文檔格式
編寫了一小段Python代碼,將圖片轉(zhuǎn)為了Excel,純屬娛樂,下面這篇文章主要給大家介紹了關(guān)于利用python將圖片轉(zhuǎn)換成excel文檔格式的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-12-12Python Paramiko創(chuàng)建文件目錄并上傳文件詳解
Paramiko是一個用于進行SSH2會話的Python庫,它支持加密、認證和文件傳輸?shù)裙δ?本文旨在詳細指導(dǎo)新手朋友如何使用Python的Paramiko庫來創(chuàng)建遠程文件目錄并上傳文件,希望對大家有所幫助2024-10-10