新聞中心
隨著云存儲(chǔ)的普及,百度網(wǎng)盤成為許多人備份數(shù)據(jù)、共享文件的首選平臺(tái)之一。然而,使用百度網(wǎng)盤也有諸多不便,比如上傳受限、無法自由組織文件夾、對(duì)于一些非常規(guī)文件格式的支持等等問題。此外,有些用戶還擔(dān)心網(wǎng)盤不穩(wěn)定,文件有被誤刪、被他人惡意訪問的風(fēng)險(xiǎn)。

成都創(chuàng)新互聯(lián)公司技術(shù)團(tuán)隊(duì)10年來致力于為客戶提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、成都品牌網(wǎng)站建設(shè)、成都全網(wǎng)營(yíng)銷、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了上千家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。
為了避免這些煩惱,一些用戶選擇了將數(shù)據(jù)存儲(chǔ)在自己的云服務(wù)器上。在這個(gè)過程中,如果將百度網(wǎng)盤網(wǎng)頁的元素解析出來,就可以實(shí)現(xiàn)自動(dòng)備份、自動(dòng)同步文件夾等功能。而Python,作為一門強(qiáng)大的腳本語言,恰好提供了一些常用的模塊和庫,方便我們?nèi)ソ馕鼍W(wǎng)頁、處理數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)和構(gòu)建Web應(yīng)用。
在這篇文章中,我將介紹如何使用Python語言,利用數(shù)據(jù)庫來實(shí)現(xiàn)百度網(wǎng)盤數(shù)據(jù)的存儲(chǔ)。這個(gè)項(xiàng)目包括兩個(gè)部分:爬蟲和Web應(yīng)用。爬蟲部分負(fù)責(zé)解析百度網(wǎng)盤的元素,并將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。Web應(yīng)用部分利用Flask框架從數(shù)據(jù)庫中讀取數(shù)據(jù),展示給用戶。
一、爬蟲部分
1.1. 準(zhǔn)備工作
需要安裝一些必要的Python庫:
“`
pip install requests
pip install lxml
pip install PyMySQL
“`
其中,requests庫是用來發(fā)送HTTP請(qǐng)求的;lxml庫是用來解析HTML文檔的;PyMySQL庫是用來連接MySQL數(shù)據(jù)庫的。
1.2. 爬取文件列表
在爬蟲部分,我們需要爬取的是百度網(wǎng)盤的文件列表。這個(gè)列表可以通過向服務(wù)器發(fā)起GET請(qǐng)求得到。請(qǐng)求的參數(shù)和結(jié)果如下:
請(qǐng)求參數(shù):
“`
https://pan.bdu.com/api/list
?dir=/folderPath&start=0&limit=60&order=time&desc=1&clienttype=0
“`
參數(shù)解釋:
– `dir`:要爬取的文件夾路徑
– `start`:從哪個(gè)文件索引開始(0表示之一個(gè)文件)
– `limit`:每頁多少個(gè)文件
– `order`:按什么排序:size(文件大?。?、time(上傳時(shí)間),server_filename(文件名)
– `desc`:1為降序,0為升序
– `clienttype`:客戶端類型,0為web,1為Android,2為iPhone
請(qǐng)求結(jié)果:
“`
{
“errno”: 0,
“l(fā)ist”: [
{
“isdir”: 0,
“server_mtime”: 1568675850,
“category”: 1,
“server_ctime”: 1568675850,
“unlist”: 0,
“oper_id”: 412023857398496,
“size”: 88739,
“l(fā)ocal_mtime”: 1568675850,
“isdelete”: 0,
“fs_id”: 483962842,
“md5”: “7c956d9796c3ba6e95469368d6317eeb”,
“l(fā)ocal_ctime”: 1568675850,
“path”: “/folderPath/fileName”,
“server_filename”: “fileName”,
“server_atime”: 1631348536,
“mtime”: 1631348536,
“ctime”: 1631348536,
“dlink”: “aHR0cHM6Ly9wYW4uYmFpZHUuY29tL1pOYWJLOGF0cURMQlZm”,
“ftype”: 0
},
{
“category”: 4,
“fs_id”: 837620238,
“oper_id”: 7095014416802,
“l(fā)ocal_ctime”: 1494336221,
“l(fā)ocal_mtime”: 1494336221,
“path”: “/folderPath/fileName.pdf”,
“server_atime”: 1494336221,
“server_ctime”: 1494336221,
“server_filename”: “fileName.pdf”,
“server_mtime”: 1494336221,
“isdelete”: 0,
“isdir”: 0,
“unlist”: 0,
“size”: 15440778,
“md5”: “74f09c841958613f31dcb18d223c222a”,
“dlink”: “aHR0cHM6Ly9wYW4uYmFpZHUuY29tL3Nob3J0L0ZpbGVJZDovL0RZbUVNTEJXM25NWHN5cFdSNC1Kdm5YWGJVa1BBQXFJc2Z4bk8”,
“ftype”: 0
},
…
],
“l(fā)ist_num”: 1000,
“request_id”: 1111111111
}
“`
響應(yīng)結(jié)果解釋:
– `errno`:錯(cuò)誤碼,0為正常返回
– `list`:文件列表
– `isdir`:文件類型,0為文件,1為文件夾
– `size`:文件大小,字節(jié)為單位
– `server_mtime`:文件修改時(shí)間,時(shí)間戳(秒)
– `server_ctime`:文件創(chuàng)建時(shí)間,時(shí)間戳(秒)
– `server_filename`:文件名
– `dlink`:文件下載鏈接,需要解碼(后面會(huì)介紹)
– …
以上就是爬取百度網(wǎng)盤文件列表所需要的請(qǐng)求參數(shù)和響應(yīng)結(jié)果。下面是實(shí)現(xiàn)代碼:
“`
import requests
import pymysql
from lxml import etree
# 初始化請(qǐng)求參數(shù)
params = {
‘dir’: ‘/’, # 要爬取的文件夾路徑
‘start’: 0, # 從之一個(gè)文件開始
‘limit’: 60, # 每頁60個(gè)文件
‘order’: ‘time’, # 按時(shí)間排序
‘desc’: 1, # 降序排列
‘clienttype’: 0 # web客戶端
}
# 初始化請(qǐng)求頭
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36’,
‘Cookie’: ‘BDUID=XXXXXXXXXXXXXXX:FG=1’
}
# 請(qǐng)求鏈接
url = ‘https://pan.bdu.com/api/list’
# 初始化數(shù)據(jù)庫連接
db = pymysql.connect(host=’localhost’, port=3306, user=’your_username’, password=’your_password’, database=’bdupan’, charset=’utf8mb4′)
cursor = db.cursor()
# 翻頁
while True:
# 發(fā)起GET請(qǐng)求
res = requests.get(url=url, params=params, headers=headers)
data = res.json()
if not data[‘list’]:
# 沒有更多結(jié)果了
break
# 遍歷文件列表
for file in data[‘list’]:
# 構(gòu)造SQL語句,并插入數(shù)據(jù)庫
sql = f”INSERT INTO files (name, size, ctime, mtime, link) VALUES (‘{file[‘server_filename’]}’, {int(file[‘size’])}, {int(file[‘server_ctime’])}, {int(file[‘server_mtime’])}, ‘{str.encode(file[‘dlink’]).decode()}’);”
cursor.execute(sql)
db.commit()
# 每頁60個(gè)文件,繼續(xù)爬取下一頁
params[‘start’] += 60
# 關(guān)閉數(shù)據(jù)庫連接
db.close()
“`
其中,主要功能就是在循環(huán)中不斷發(fā)起GET請(qǐng)求,解析json數(shù)據(jù),生成SQL語句并插入數(shù)據(jù)庫。這一部分比較簡(jiǎn)單,代碼中也有注釋,不再贅述。
但是需要注意的是,百度網(wǎng)盤返回的`dlink`是一個(gè)base64編碼的字符串,需要利用`str.encode`和`str.decode`方法進(jìn)行解碼,才能正常使用。
1.3. 下載文件
在百度網(wǎng)盤中,每個(gè)文件都有一個(gè)對(duì)應(yīng)的下載鏈接(`dlink`字段),我們可以利用這個(gè)鏈接來實(shí)現(xiàn)文件下載。在Python中,可以用requests庫來下載文件,代碼如下:
“`
import requests
url = ‘http://d.pcs.bdu.com/file/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX?fid=123456789’
download_path = ‘/path/to/save/file’
# 下載文件
res = requests.get(url)
with open(download_path, ‘wb’) as f:
f.write(res.content)
“`
在下載文件時(shí),我們需要注意以下問題:
– `url`參數(shù)中,`XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`是文件的唯一編號(hào),`123456789`是文件在百度網(wǎng)盤中的ID號(hào),通過解析文件列表得到。
– `download_path`參數(shù)是文件下載后保存的本地路徑。
人工下載一個(gè)文件后,會(huì)發(fā)現(xiàn)下載鏈接的有效期大約只有2小時(shí),過期無法下載。如果想做到“無人值守”,需要編寫一個(gè)定時(shí)器,定時(shí)更新下載鏈接。這個(gè)定時(shí)器可以使用Python的定時(shí)任務(wù)庫(如APScheduler,或系統(tǒng)自帶的crontab)來實(shí)現(xiàn)。
二、Web應(yīng)用部分
在爬蟲部分,我們已經(jīng)完成了數(shù)據(jù)的爬取和存儲(chǔ),現(xiàn)在需要將數(shù)據(jù)展示給用戶。這里我使用了Python的Web框架Flask來實(shí)現(xiàn)。
2.1. 數(shù)據(jù)庫查詢
由于我們爬取的是百度網(wǎng)盤中的文件列表,所以需要建立一個(gè)名為`files`的數(shù)據(jù)庫表,用于存儲(chǔ)文件的各個(gè)信息。這個(gè)表的結(jié)構(gòu)如下:
“`
CREATE TABLE files(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(500),
size BIGINT,
ctime INT,
mtime INT,
link TEXT
);
“`
查詢語句如下:
“`
SELECT id, name, size, ctime, mtime, link FROM files ORDER BY mtime DESC
“`
這條語句利用`ORDER BY`關(guān)鍵字,按照文件的修改時(shí)間,從最近到最遠(yuǎn)進(jìn)行排序。同時(shí),這里只查詢了`id`、`name`、`size`、`ctime`、`mtime`、`link`這幾個(gè)字段,其他的字段可以自行添加。
2.2. 構(gòu)建Web應(yīng)用
接下來是構(gòu)建Web應(yīng)用的環(huán)節(jié)。我們需要在Flask的主程序中,連接MySQL數(shù)據(jù)庫,然后從數(shù)據(jù)庫中查詢文件列表,生成HTML代碼并渲染到頁面上。
主程序代碼如下:
“`
from flask import Flask, render_template
import pymysql
# 初始化Flask應(yīng)用
app = Flask(__name__)
# 初始化數(shù)據(jù)庫連接
db = pymysql.connect(host=’localhost’, port=3306, user=’your_username’, password=’your_password’, database=’bdupan’, charset=’utf8mb4′)
cursor = db.cursor()
# 首頁路由,用于展示文件列表
@app.route(‘/’)
def index():
# 查詢文件列表
cursor.execute(‘SELECT id, name, size, ctime, mtime, link FROM files ORDER BY mtime DESC’)
files = cursor.fetchall()
# 生成HTML代碼
html = ”
for file in files:
html += f’
{file[0]} {file[1]} {round(file[2] / 1024 / 1024, 2)} MB {file[3]} {file[4]} 下載
‘
# 渲染模板并返回
return render_template(‘index.html’, html=html)
# 404錯(cuò)誤處理
@app.errorhandler(404)
def page_not_found(e):
return render_template(‘404.html’), 404
# 啟動(dòng)Web應(yīng)用
if __name__ == ‘__mn__’:
app.run()
“`
渲染模板時(shí),需要傳遞`html`參數(shù),這個(gè)參數(shù)就是剛剛生成的HTML代碼。
HTML模板代碼如下:
“`
百度網(wǎng)盤備份
百度網(wǎng)盤備份
{{ html }}
| ID | 文件名 | 大小 | 創(chuàng)建時(shí)間 | 修改時(shí)間 | 下載 |
|---|
Powerd by Python
“`
這個(gè)模板中,前端代碼比較簡(jiǎn)單,沒有使用任何CSS和JavaScript庫。只是用HTML和CSS簡(jiǎn)單地顯示了文件列表,方便用戶瀏覽和下載。同時(shí),對(duì)這個(gè)頁面進(jìn)行美化或功能擴(kuò)展,也是可行的。
三、項(xiàng)目
通過學(xué)習(xí)這篇文章,我們學(xué)會(huì)了如何使用Python,利用數(shù)據(jù)庫(MySQL)、網(wǎng)絡(luò)請(qǐng)求(requests庫)、HTML解析(lxml庫)和Web框架(Flask)等技術(shù),實(shí)現(xiàn)百度網(wǎng)盤數(shù)據(jù)的自動(dòng)備份和自動(dòng)同步等功能。此外,我們還學(xué)習(xí)了如何利用定時(shí)任務(wù)庫,定時(shí)更新百度網(wǎng)盤中的文件列表。
當(dāng)然,這個(gè)項(xiàng)目還遠(yuǎn)遠(yuǎn)沒有完美,仍有很多方面需要擴(kuò)展和完善。比如錯(cuò)誤處理、文件類型識(shí)別、文件夾同步、頁面美化等等。這些都可以作為參考而不斷擴(kuò)展和完善。
提醒一下,在使用本項(xiàng)目時(shí),請(qǐng)注意遵守百度網(wǎng)盤的用戶協(xié)議,不要惡意盜鏈和散布惡意代碼,否則后果自負(fù)。同時(shí),在使用Python進(jìn)行爬取時(shí),也需要注意遵守相關(guān)規(guī)定,不要侵犯他人的隱私和知識(shí)產(chǎn)權(quán),更不要濫用Python技術(shù)。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220《從零開始學(xué)Python數(shù)據(jù)分析與挖掘第二版》pdf下載在線閱讀全文,求百度網(wǎng)盤云資源
《從零開始學(xué)Python數(shù)據(jù)分析與挖掘第二版》百度網(wǎng)盤pdf最新全集下載:
鏈接:
?pwd=488y 提取碼:488y
簡(jiǎn)介:全書共涵寬冊(cè)旦蓋15種可視化圖形以及10個(gè)常用的數(shù)據(jù)挖掘算法和實(shí)戰(zhàn)項(xiàng)目,通過本書的學(xué)習(xí),讀者可以掌握數(shù)據(jù)分析與挖姿兄掘的理論知識(shí)和實(shí)戰(zhàn)技能。本書適于統(tǒng)計(jì)學(xué)、數(shù)學(xué)、經(jīng)濟(jì)學(xué)、金融學(xué)、管理學(xué)以及相關(guān)理工科專業(yè)的本科生、研究生使用,也能夠提高從事數(shù)據(jù)咨詢、研究或分析等人士的專業(yè)水平和技能。 慎擾
誰有利用python進(jìn)行數(shù)據(jù)分析 pdf 的中文 完整版的,求發(fā)一下
利用python進(jìn)行扮銷數(shù)據(jù)分析
鏈接:
?pwd=3nfn 提取碼: 3nfn
本書也可以作為利用Python實(shí)現(xiàn)數(shù)據(jù)密集型應(yīng)用的科明缺信學(xué)計(jì)算實(shí)踐指南。本書適合剛剛接觸Python的分析人員以及剛剛接觸激輪科學(xué)計(jì)算的Python程序員。
《唯余python進(jìn)行數(shù)據(jù)分析》百度網(wǎng)盤資源下載
鏈接:
提取碼: e4n7
作品簡(jiǎn)介信缺:
Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的GuidovanRossum于1990年代初設(shè)計(jì),作為一門叫做指坦?jié)LABC語言的替代品。
《Wes-McKinney-利用Python進(jìn)行數(shù)據(jù)分析.epub》百悶梁枯度網(wǎng)盤免費(fèi)下載:
鏈接螞洞:
?pwd=r77v 提取渣空碼: r77v
鏈銷塌配接:
提取碼: z8fs 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦
作品簡(jiǎn)介:
Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究衫拆學(xué)會(huì)的Guido van Rossum 于1990 年代初設(shè)計(jì),作為一門叫做ABC語言的替代虧指品。
《python進(jìn)行數(shù)據(jù)分析》百度網(wǎng)盤免費(fèi)資源下載:
鏈接:
提取碼:z8fs
Python由乎消茄荷蘭數(shù)學(xué)和橋啟計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的GuidovanRossum于1990年代初設(shè)計(jì),作為一門叫做ABC語言歲察的替代品。
Python數(shù)據(jù)庫百度網(wǎng)盤的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于Python數(shù)據(jù)庫百度網(wǎng)盤,Python應(yīng)用:利用數(shù)據(jù)庫實(shí)現(xiàn)百度網(wǎng)盤數(shù)據(jù)存儲(chǔ),《從零開始學(xué)Python數(shù)據(jù)分析與挖掘第二版》pdf下載在線閱讀全文,求百度網(wǎng)盤云資源,誰有利用python進(jìn)行數(shù)據(jù)分析 pdf 的中文 完整版的,求發(fā)一下的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)【028-86922220】值得信賴的成都網(wǎng)站建設(shè)公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設(shè),成都品牌建站設(shè)計(jì),成都高端網(wǎng)站制作開發(fā),SEO優(yōu)化排名推廣服務(wù),全網(wǎng)營(yíng)銷讓企業(yè)網(wǎng)站產(chǎn)生價(jià)值。
網(wǎng)站題目:Python應(yīng)用:利用數(shù)據(jù)庫實(shí)現(xiàn)百度網(wǎng)盤數(shù)據(jù)存儲(chǔ)(Python數(shù)據(jù)庫百度網(wǎng)盤)
網(wǎng)站鏈接:http://m.5511xx.com/article/ccejgpg.html


咨詢
建站咨詢
