百度文档,用Python一键免费下载,百度vip文档怎么免费下载,百度文库下载需要券,
百度文档,用Python一键免费下载,百度vip文档怎么免费下载,百度文库下载需要券,
百度文库下载需要券,或者vip才能下载
Vip价格高,偶尔下载一次不划算。
不下载复制?不好意思复制也需要vip否则只能一次复制两行。
如何才能以最低成本获取到百度文库里的文档内容呢?
当然是用Python啦!
接下来教大家如何使用Python免费下载百度文档。
由于百度文库的内容是通过网页展示的,那我们猜他是通过后台加载进来的。可以先通过Ctrl+u查看HTML源码,看源码里面是否有文档数据。很遗憾HTML源码里面并没有文档内容。
确定不是通过HTML加载的之后,我们就可以大胆的猜测他是通过json异步加载。所以通过F12打开开发者管理工具network抓包,查看页面加载过程请求的URL。这里会有大量的请求,但是我们仔细观察会发现有一个0.json的URL返回的数据就是文档的文本数据。
拿到请求文档数据的URL后需要确定URL参数。通过查看headers确定请求方式为GET请求。请求参数里x-bce-range和token是变动的,其他都是固定不变。
token这个东西很多时候都会写入到HTML页面里去,用途是防csrf攻击。但是百度文档里面的token有什么用我们不用关心,重要的是这个token那里来。去HTML源代码里查看这两个变量能不能获取到。
果然,在HTML源码里有一段js代码,其中就包含了所有请求文档的URL。看起来有点像,但还是不一样啊!其实这里是包含了转移符 \ ,还有一个比较奇怪的 \x22 其实是一个双引号。把这段不规范的json数据提取出来替换掉 \ 和 \x22就是一个标准的json格式数据。
提取文档数据URL代码实现
defget_document():
# 文库url
url="https://wenku.baidu.com/view/eefef92fa1116c175f0e7cd184254b35eefd1a97.html?from=search"
sess=requests.Session()
html=sess.get(url).content.decode("gbk")
#抓取到文档标题
title=re.search(‘id="doc-tittle-0">(.*?)</span>‘,html).group(1)
#使用正则提取文档内容的url
res=re.search("WkInfo.htmlUrls=‘(.*)‘",html).group(1)
#\\x22是linux中的引号,替换成Python中的引号
res=res.replace("\\x22","\"")
#转成字典
data=json.loads(res)
拿到URL之后继续发送请求获取文档数据,文档数据是分段保存到json里面的,json里面的数据如下图所示。
字段解释:
c: 数据
p: 位置
r: 暂时不确定作用
s: 字体样式
t: 数据格式(word文本,pic图片)
ps: 样式,_enter:1 表示换行,同一段的文本ps值为空
由于图片加载比较特殊,有时候可能通过一个请求加载两张图片,不好确定图片的位置,所以这里暂且不考虑图片,我们只抓取文本。
defget_document():
#....省略前面代码
#新建一个文档
document=Document()
string=""
foriindata["json"]:
url=i["pageLoadUrl"]#获取到url
url=url.replace("\\","")#url中有转义符\去掉
#请求文档内容
data=requests.get(url).content.decode("utf-8")
#提取文本数据
res=re.search("wenku_\d*\((.*)\)",data,re.S).group(1)
#将json对象数据转成Python对象
data=json.loads(res)
foriindata[‘body‘]:
#判断数据是什么类型
ifi["t"]=="word":
#获取到文本
string+=str(i["c"])
#ps中不为空并且_enter==1的时候是换行也就是一段内容
ifi["ps"]andi["ps"].get("_enter")==1:
document.add_paragraph(string)#将一段内容写入到word
string=""#重新复制""表示新的一段文本
#保存word
document.save(title+".docx")
到这里就已经可以把一个百度文档的文本内容完整下载下来。
网上随机选一篇文档来测试效果,纯文本的文档效果贼好。缺点就是不能同时下载图片插入到word里面去。
百度文档,用Python一键免费下载
相关内容
- Python 操作 Outlook 邮箱,注册自己的电子邮箱号,#!/usr/
- Python之让 字符串内的转义字符 不做任何处理,python转
- Python的Request模块,请求跳过认证及禁用警告,,最近在
- 拼多多可信吗?真有亿万用户在用?Python分析50w数据,
- Python接口自动化之登录接口测试,,在上一篇Python
- Qgis 里的Python脚本介绍,自我介绍拍摄脚本,QGIS 入门演
- python中的urlencode和urldecode,pythonurlencode,python将字符串
- 关于python文件显示为空白文件图标的解决办法,,1 ass
- Python小工具-查看内存和CPU,内存条频率大于cpu支持频率
- 智能客服 对话实现--python aiml包,,利用了python的
评论关闭