百度文库文字下载(python原码)

import json
import re
import requests
def get_document():

    # 文库url
    sess = requests.Session()
    url = input("请输入百度文档url:")
    headers = {
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
        "Referer": "https://wenku.baidu.com/",
        "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Mobile Safari/537.36 Edg/88.0.705.63",

    }
    sess.get("https://wk.baidu.com")
    html = sess.get(url, headers=headers).text
    # 抓取到文档标题
    title = re.findall("<title>(.*?) - 百度文库</title>", html)[0]
    #
    # 使用正则提取 文档内容的url
    res = re.findall('"htmlUrls":(.*),"free_page"', html)[0]
    # 转成字典

    data = json.loads(res)
    # 新建一个文档

    with open(title + ".doc", "w", encoding="gb2312") as f:

        string = ""
        num = 0
        for i in data["json"]:

            url = i["pageLoadUrl"]  # 获取到url

            # 请求文档内容

            data = requests.get(url).text

            # 提取文本数据

            res = re.search("wenku_\d*\((.*)\)", data, re.S).group(1) # re.S整体进行匹配

            # 将json对象数据转成Python对象

            data = json.loads(res)

            for i in data['body']:

                # 判断数据是什么类型

                if i["t"] == "word":

                    # 获取到文本

                    string += str(i["c"])

                    # ps中不为空并且_enter==1的时候是换行也就是一段内容

                    if i["ps"] and i["ps"].get("_enter") == 1:
                        f.write(string)
                        f.write("\n  ")
                        string = ""  # 重新复制 "" 表示新的一段文本


if __name__ == '__main__':
    get_document()

基于转载文章进行的更新再加工

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值