百度文库文档下载地址解析python版【摸索不易,还请支持】
本帖最后由 IvenLuck 于 2020-12-12 15:36 编辑1、浏览器打开百度首页,登录百度账号
2、按F12打开开发者工具,切换到网络选项卡,刷新页面
3、点开首页请求记录
4、复制bduss粘贴到程序中,软件即可正常运行,至于具体干什么就看你自己了
百度文库文档解析核心代码到此全部呈上,对接哪里?对接什么就靠你自己发挥了{:1_918:}
import requests
from bs4 import BeautifulSoup
class BaiDuWenKu(object):
def __init__(self):
# 初始化操作
headers = {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0"
}
self.session = requests.Session()
self.session.headers.update(headers)
def setBduss(self, bduss):
'''
设置cookie,将作为解析下载时的身份验证
'''
cookies = {"BDUSS": bduss}
self.session.cookies.update(cookies)
def parserFileInfo(self, file_url):
'''
根据文档url解析文档信息
'''
res = self.session.get(file_url)
soup = BeautifulSoup(res.text, "html.parser")
file_info_options = [
"ct", "doc_id", "retType", "sns_type", "storage", "useTicket",
"target_uticket_num", "downloadToken", "sz", "v_code", "v_input"
]
data = {}
try:
for option in file_info_options:
value = soup.find(
"input", attrs={
"name": option
}).get("value") or ""
data = value
except BaseException as e:
raise Exception("文档信息解析失败!")
data["req_vip_free_doc"] = "1"
return data
def download(self, data):
'''
根据解析的数据下载文档
'''
url = "https://wenku.baidu.com/user/interface/getvipfreedoc"
params = {"doc_id": data["doc_id"]}
jRes = self.session.get(url, params=params).json()
if not jRes["data"]["is_vip_free_doc"]:
raise Exception("只能下载vip免费文档哦")
url = "https://wenku.baidu.com/user/submit/download"
res = self.session.post(url, data=data, allow_redirects=False)
if res.status_code == 302:
return res.headers.get("Location")
else:
raise Exception("下载失败,请稍后再试!")
def main():
'''
负责逻辑调度
'''
bduss = "Vx*************81djg2WDgtUU5pMkE5UnhmRV*********AAAAAAEAAABlTk4wbnZwZW5neW91amlnZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBo9V6AaPVeWG"
bdwk = BaiDuWenKu()
bdwk.setBduss(bduss)
# url=input("请输入要下载的文档url:")
url = "https://wenku.baidu.com/view/96fec4f4f321dd36a32d7375a417866fb94ac074.html?fr=search-income2"
file_info = bdwk.parserFileInfo(url)
download_url = bdwk.download(file_info)
input("文档下载地址为:{}\n请及时下载".format(download_url))
if __name__ == "__main__":
try:
main()
except BaseException as e:
input(e)
喜欢的话记得给个赞,点个关注哦{:1_893:}
附运行图一张:
perrychan 发表于 2020-12-12 16:27
https://wenku.baidu.com/view/89014cd977c66137ee06eff9aef8941ea66e4b99.html
解析失败,是我的问题吗?
我也解析失败。。。。
文档结构有变吧,没测试那么多类型的文档 17601243856 发表于 2020-12-12 21:57
额,一直提示文档解析失败,是失效了吗
确实有些文档解析不了。测试不多 啊?是不是还没编辑完... 下载的是原版文档吗 这没写完就发出来啦?
{:301_995:} 旖旎若鸿 发表于 2020-12-12 15:25
啊?是不是还没编辑完...
编辑一半点错了。。。。 雪莱鸟 发表于 2020-12-12 15:28
这没写完就发出来啦?
点错了。。。。 快点吧,我双12都不去买东西,就在这等你了{:301_990:} huixiaochuna 发表于 2020-12-12 15:32
快点吧,我双12都不去买东西,就在这等你了
已补充完整! 能直接赐给个简易软件吗,歇菜菜鸟看不懂代码{:1_909:} lxwen 发表于 2020-12-12 15:26
下载的是原版文档吗
是原版文档