baidu文库爪巴虫——txt

首先你应该清楚,直接从文档页面源代码中是找不到文档内容的,

但是我们通过查看浏览器下载的文件,可以很容易的发现文档内容的来源,

为什么说容易呢,引文包含内容的文件通常都是比较大的!只要按文件大小排序,往下找就能发现!
在这里插入图片描述
没错就是最大的那个文件,里面妥妥的是汉字
在这里插入图片描述
接下来就要分析一下请求的格式了,查看 header 发现 get 参数一大堆
在这里插入图片描述
怎么获取这些参数呢?

最先想到的就是在文档页面的源代码中找啦

非常不巧的是,这些参数都能找到!

import requests

import re

url = 'https://wenku.baidu.com/view/edabfd2ce3bd960590c69ec3d5bbfd0a7956d518.html?fr=search'
html = requests.get(url).text

res = re.findall(r'"md5sum":"&md5sum=(.*?)&sign=(.*?)"', html)
md5, sign = res[0]

res = re.findall(r'"show_doc_id":"(.*?)"', html)
txtid = res[0]

res = re.findall(r'"page":"(.*?)"', html)
rn = res[0]

res = re.findall(r'"rsign":"(.*?)"', html)
rsign = res[0]

u = "https://wkretype.bdimg.com/retype/text/{}?md5sum={}&sign={}&callback=cb&pn=1&rn={}&type=txt&rsign={}&_=0".format(
    txtid,
    md5,
    sign,
    rn,
    rsign
)
print(u)
# https://wkretype.bdimg.com/retype/text/edabfd2ce3bd960590c69ec3d5bbfd0a7956d518?md5sum=ef62b71614efa14128d1b234fb9b35e6&sign=6c912310fc&callback=cb&pn=1&rn=15&type=txt&rsign=p_15-r_0-s_20235&_=1599058207247

new_html = requests.get(u).text
txt_list = re.findall(r'"c":"(.*?)"', new_html)
result = ''.join([item.encode('utf8').decode('unicode_escape','ignore') for item in txt_list])
print(result)
'''
说明:
1、以脂校本为准。【】中是引用的原文;()中是我添加的说明;···是标记年表与文中矛盾之处。
2、为说明引用、表述,我采用了一个红楼纪年坐标,以甄士隐梦中识通灵为坐标起点,作为红楼元年开始纪事。
3、推理的基础是:宝玉在甄士隐梦见僧道那一年出生;钗、菱、袭、晴四人同庚。
4、文中时间顺序本来就有矛盾之处,特别是62回至70,时间线索模糊不清,前后冲突之处甚多,我试了多种排序也不能完全与文字相符,勉强排了下来但明显有错,还请高人指点。
5、尽量把时间的结点都排列出来,所以叫啰嗦版。而且文字也很啰嗦,请忍耐。

...
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值