Python爬虫----爬取百度文库中的文章

下载及安装Python详细步骤 安装python分三个步骤: *下载python *安装python *检查是否安装成功 1、下载Python (1)python下载地址https://www.python.org/downloads/ (2)选择下载的版本 (3)点开Download后,找到下载文件 Gzipped source tarball是Linux系统下载的版本 XZ compressed source tarball是CentOS系统下载的版本 注意Linux和CentOS自带pyth... 阅读详情
爬取大多数百度文库的文章或图片数据

创建了两个调用方法,分别获取文字和图片内容
输入文章的url链接尝试获取数据
使用set进行了简单去重
文档以doc格式,图片使用jpg格式进行保存
l
仅限学习使用!

import os
import re
import json
import requests
from urllib.request import urlretrieve


class BaiduWk:
    def __init__(self):
        self.list_info = []
        self.session = requests.session()
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 \
            (KHTML, like Gecko) Chrome/80.0.3987.87 Mobile Safari/537.36'}

    # 获取网页源代码的数据
    def get_html(self, start_url):
        response = self.session.get(start_url, headers=self.headers)
        response.encoding = response.apparent_encoding
        return response.text

    # 获取文档标题, 提取请求参数
    def parse_html(self, data):     
        re_title = re.findall("'title': '(.*?)',", data)
        title = re_title[0] if re_title else re.findall('<title>(.*?)</title>', data)[0]
        params = {
            'bucketNum': re.findall(r'"bucketNum":(\d+)', data)[0],
            'md5sum': re.findall('md5sum=(.*?)&', data)[0],
            'sign': re.findall('sign=(.*?)&', data)[0],
            'rtcs_flag': re.findall('rtcs_flag=(.*?)&', data)[0],
            'rtcs_ver': re.findall('rtcs_ver=(.*?)&', data)[0],
            'rsign': re.findall('"rsign":"(.*?)"', data)[0], }
        # 提取页码列表
        page_range = re.findall(r'{"page":\d+,"range":"(.*?)"}', data)
        return params, page_range, title
	
	# 以页码列表依次迭代
    def words_data(self, params, page_range):
        pages = len(page_range) + 1
        url = r'https://wkrtcs.bdimg.com/rtcs/webapp'
        for i in range(1, pages):
            print(f'正在解析第{i}页数据,飞速读取中...')
            # 添加所需的页码信息
            params['pn'] = i
            params['range'] = page_range[i - 1]
            response = self.session.get(url, params=params).text
            yield response

    # 解析文章数据
    def get_words(self, response):
        pages = 1
        for data in response:
            # 转化为json数据
            a = data[5:-1]
            text = ''
            d = json.loads(a)
            # 提取 c键 的文本数据
            for j in d['document.xml']:
                for c in j['c']:
                    text += '\n'
                    for c2 in c['c']:
                        try:
                            text += c2['c'] + '\n'
                        except:
                            continue
            text += f'\n------------------------当前第{pages}页-------------------------\n'
            pages += 1
            self.list_info.append(text)

    # 保存文件
    def save_info(self, title, path):   
        os.makedirs('百度文库', exist_ok=True)
        with open(path, 'w', encoding='utf-8') as f:
            f.writelines(self.list_info)

    def get_img(self, start_url):
        print('开始尝试解析百度文库图片...\n')
        r = self.session.get(start_url)
        r.encoding = r.apparent_encoding
        title = re.findall("'title': '(.*?)'", r.text)[0]
        print(title)
        docId = re.findall("'docId': '(.*?)'", r.text)[0]
        totalPageNum = re.findall("'totalPageNum': '(.*?)'", r.text)[0]
        totalPageNum = int(totalPageNum) + 1

        return totalPageNum, title, docId

    def download_img(self, totalPageNum, title, docId):
        for pn in range(1, totalPageNum):
            params = {'doc_id': docId, 'pn': pn, 'rn': 1, 'type': 'ppt', }
            api_url = 'https://wenku.baidu.com/browse/getrequest'
            r = self.session.get(api_url, params=params, headers=self.headers)
            src = r.json()[0].get('zoom')
            os.makedirs(title, exist_ok=True)
            path = title + '/' + str(pn) + '.jpg'
            urlretrieve(src, path)
            print(f'正在提取第{pn}页,请稍等...')
    
    # 文章去重
    def set_word(self, path):
        word_set = list()
        with open(path, 'r', encoding='utf-8') as f:
            for each_line in f:
                word_set.append(each_line)
        result = list(set(word_set))
        result.sort(key=word_set.index)
        with open(path, 'w', encoding='utf-8') as f:
            f.writelines(result)
            print('done')

	# 获取文字内容
    def run_word(self):
        print('开始尝试解析百度文库页面...\n')
        start_url = input('输入百度文库中的连接:')
        print('running...\n')
        start_url = re.sub('wenku', 'wk', start_url)
        html = self.get_html(start_url)
        param, ranges, title = self.parse_html(html)
        print(f'当前文章:{title}\n')
        path = '百度文库/' + title + '.doc'
        response = self.words_data(param, ranges)
        self.get_words(response)
        self.save_info(title, path)
        self.set_word(path)
        print('done!!!')
        print('程序执行完毕!')

	# 获取图片数据
    def run_img(self):
        print('开始尝试解析百度文库图片信息...\n')
        start_url = input('输入百度文库中的连接:')
        print('running...\n')
        totalPageNum, title, docId = self.get_img(start_url)
        self.download_img(totalPageNum, title, docId)
        print('done!!!')
        print('程序执行完毕!')


if __name__ == '__main__':
    wk = BaiduWk()
    wk.run_word()
    # wk.run_img()

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

​

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓
​

Python和PyCharm的下载和安装(详细教程) Python的下载和安装(详细教程) 含图文 由于我已安装过python,故而python安装过程的图片转载自野猫炫的博客 阅读详情

相关推荐

Python小白入门:手把手教你安装及运行第一个程序

Python小白入门:手把手教你安装及运行第一个程序

python03012的博客 4513

Pycharm教程(1)——再探IDE,速成手册

1、准备工作 (1)确认安装了Python解释器,版本2.4到3.4均可。 (2)注意Pycharm有两个发布版本:社区版和专业版,详见 Edition Comparison Matrix 2、初始化安装 第一次安装Pycharm时,安装程序会咨询你几个重要问题: (...

8088

Python百度文库爬虫之doc文件

Python百度文库爬虫之doc文件 说明:此文件是在爬取txt文件下的基础进行的,因此重复内容会一笔带过,不懂请看前面爬取txt文件链接 对于文件的所有类型,我都会用一篇文章进行说明,链接: Python百度文库爬虫之txt文件 Python百度文库爬虫之doc文件 Python百度文库爬虫之pdf文件 Python百度文库爬虫之ppt文件 Python百度文库爬虫之xls文件 一.网...

V_lq6h的博客 8657

2024最详细Python安装+Pycharm安装教程!

①win7,win8,win10系统,建议下载python3.7.4版本:②win xp:建议下载 python 3.4.4版本Python安装包虽然版本不同,但安装过程都是差不多的。完整版教程指南及安装包文末领取1-1 首先打开www.python.org (这个是python官网)下载配置环境。点击上方 downloads1-2 根据系统选择python环境下载1-3 往下拉可以看到很多版本,找到 python 3.9.9并【点击】1-4 往下拉,看到 Files,如下图。

WANGWUSAN66的博客 12万+

Python百度文库爬虫之ppt文件

Python百度文库爬虫之ppt文件 对于文件的所有类型,我都会用一篇文章进行说明,链接: Python百度文库爬虫之txt文件 Python百度文库爬虫之doc文件 Python百度文库爬虫之pdf文件 Python百度文库爬虫之ppt文件 Python百度文库爬虫之xls文件 一.网页分析 PTT文件的内容实际是图片,我们只需要把图片下载并保存 from IPython.display i...

V_lq6h的博客 6206

百度文库爬虫(一)TXT下载

由于txt文档的下载是系列下载中最简单的部分,故放在整个系列的第一篇 后续会陆续更新本系列其他文章以及github地址 欢迎访问我的博客 M010K的博客 简介 本项目是基于python实现对百度文库可预览文档的下载,实现了对以下文档格式的下载: doc/docx ppt/pptx xls/xlsx pdf txt ⚠️本项目下载的文档均为pdf格式(除txt外) ⚠️项目是本人原创,转载...

M010K的博客 3938

Python百度文库爬虫终极版

百度文库爬虫 Python百度文库爬虫之txt文件 Python百度文库爬虫之doc文件 Python百度文库爬虫之pdf文件 Python百度文库爬虫之ppt文件 Python百度文库爬虫之xls文件 Python百度文件爬虫终极版 我们在开始爬虫之前,首先要了解网页的信息和结构,然后获取请求的url和参数(payloads)来得到所要的数据并处理。接下来我们根据: 一.网页分析 二.爬虫...

V_lq6h的博客 3万+

百度文库爬虫

FreeForWenku 免费下载百度文库收费资料,支持关键字搜索,以及url批量爬取。目前本项目仅对原项目的doc、txt爬取优化,其余的待完成优化。 项目地址:whxf/FreeForWenku 声明: 本项目fork 自 Lz1y/FreeForWenku。对原有项目进行优化,添加支持关键字搜索,url批量爬取,logger等功能 原文链接:https://blog.xixilili.cn/...

whxf的博客 1298

爬取百度文库文章

百度文库爬取提要网页分析软件要求requests介绍程序编写 提要 相信很多小伙伴在网上摘抄论文的时候都曾经受过百度文库无法复制的苦吧,那么我们是真的没办法把这些文字复制下来了吗? 答案是否定的,小编的观点是,竟然是出现在我们浏览器上面的内容了,当然就可以拿下来啦,下面以爬取全国大学生同上一堂思政课观后感为例。 网页分析 我们对下面的网页进行分析: 同上一堂思政课观后感 首先查看网页源代码,我们发...

weixin_42494845的博客 7191

Zemax序列模式下激光二极管(LD)光源建模与像散校正实战

本文详细讲解了在Zemax序列模式下精确建立激光二极管(LD)光源模型并校正其像散的核心方法。通过将椭圆光束的发散角转换为渐晕系数,并巧妙利用理想柱面镜模拟像散,实现了对LD光源特性的高精度模拟。该方法特别适用于激光耦合、激光雷达等需要对像散光束进行精密控制的光学系统设计。

weixin_28455801的博客 438

零代码实战:基于Coze平台打造测试用例生成AI助手

本文详细介绍了如何利用Coze平台零代码打造测试用例生成AI助手,通过智能体和工作流配置,实现需求文档自动解析与结构化测试用例生成。该方案显著提升测试效率,特别适合敏捷开发中频繁变更的需求场景,帮助测试工程师快速应对挑战。

weixin_42526015的博客 209

Python爬虫——爬取百度文库文章

爬取-百度文库中的文章 爬取大多数百度文库的文章或图片数据

微生成白 4845

TongWeb微服务部署实战:Nacos注册与网关路由的疑难解析

本文分享了将Spring Cloud微服务迁移至TongWeb应用服务器时,解决Nacos服务注册失败与Spring Cloud Gateway路由失效的实战经验。针对Nacos注册问题,通过实现ApplicationRunner接口并利用JMX获取容器端口,实现了手动注册;针对网关路由问题,建议将基于WebFlux的Gateway模块改为JAR包独立部署,以保障其原生运行环境。文章为在TongWeb上进行微服务部署提供了关键的问题排查思路与混合架构部署的最佳实践。

weixin_29209801的博客 240

Python3网络爬虫(九):使用Selenium爬取百度文库word文章

转载请注明作者和出处: http://blog.youkuaiyun.com/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3前言 对于学习爬虫的人来说,面对怎样免费下载一个付费的word文章的问题,第一个想到的应该就是:自己写个程序搞下来。

Jack-Cui 7万+

Google账号找回通用方法(尤其是知道账号密码仍无法登录和找回的)

Google账号找回通用方法【尤其是知道账号密码仍无法登录和找回的】普通找回注意:适用于常用谷歌账户的设备和网络情况下无法使用手机或辅助邮箱验证码进行密码找回特殊找回方法注意;适用于1.新的设备以及网络环境(包括由于非正常原因导致设备系统以及应用信息变更)2.没有开启辅助验证(手机/邮箱)3.知道账号密码但无法登录或找回。通过申诉进行找回 普通找回 注意:适用于 常用谷歌账户的设备和网络情况下 无法使用手机或辅助邮箱验证码进行密码找回 通过恢复页面进行恢复 https://accounts.google

极客代码-极致生活 23万+

HttpClient vs OkHttpClient:哪个更适合你的Java项目?(附性能对比实测)

本文深度对比了Apache HttpClient与OkHttpClient在Java项目中的性能表现与适用场景。通过实际性能测试,OkHttp在连接复用、高并发吞吐量及内存占用方面表现更优,尤其适合现代微服务与Spring生态。HttpClient则凭借其高度可配置性,在需要精细控制HTTP协议细节的场景中更具优势。文章提供了清晰的选型指南,帮助开发者根据项目需求做出最佳决策。

onion的博客 509

python爬取百度文库DOC文档的简易脚本

页面分析 我们首先在百度文库随便搜索一片文章,(此脚本只针对DOC文档)打开它,查看源码 我们定位到具体某行文字,可以发现文字都分布在各个标签内部,这时候和我一样初学爬虫的小伙伴会想到用request来获取html源码,用BeautifulSoup进行操作,想法是好的,可是现在的百度文库不是以前,现在的百度文库的反爬手段还是有的,当你request下来后你会发现根本找不到文章中的文字,道高一尺魔...

qq_28837549的博客 5952

Ollama安装教程

Ollama 是一个开源的大语言模型(LLM)部署工具,专为在本地机器部署和运行大模型而设计,通过简单的命令就可以在本地快速运行大模型(如DeepSeek、Llama、Gemma、QWQ等)。非常适合开发者、研究人员以及对数据安全和隐私有较高要求的企业和用户

学习AI应用开发,分享AI干货、获取最新AI咨询 3855

绕过反爬虫:用Python高效爬取百度文库的秘籍

百度文库是百度公司提供的一个文档在线分享平台。用户可以在该平台上发布并分享自己的文档,也可以在平台上查找和下载其他用户分享的文档。本文将介绍如何使用Python实现爬取百度文库的功能。要使用Python爬取百度文库的内容,可以按照以下步骤进行操作:2024年最新python教程全套,学完即可进大厂!(附全套视频 下载) (qq.com)分析网页结构首先需要了解百度文库的网页结构和数据加载方式。很多内容是通过异步加载的,直接访问网页源代码可能看不到完整的内容。设置请求头。

R5463995的博客 2227

Open3D 基于法向量夹角的特征点提取

基于法向量夹角的特征点提取是一种在点云处理中用于识别表面变化显著区域的技术。通过计算点云中每个点的法向量与其邻域点法向量之间的夹角,可以判断点云表面的局部变化程度,并提取那些法向量变化较大的点作为特征点。这种方法特别适用于提取边缘、角点等关键几何特征。

纵马踏花向自由 1553

【软考之软件设计师】学习笔记

interface 接口implements 实现接口(与接口配套使用)接口里要是有方法定义,子类就会实现。

云轩阁 2533

Python利用requests库爬取百度文库文章

本来马上做课设,做课设太烦了,所以只好偷工减料,但是想下载一个百度文库的文章,结果一看还要会员,这作为一个程序员怎么受得了。 这岂不是让一个本不富裕的家庭更加的雪上加霜。那我只能靠Python维持学习了! python爬取百度文库1.Requests2.安装requests3.代码 1.Requests Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP

qq_44176343的博客 1745

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python百度文库爬虫之pdf文件

Python百度文库爬虫之ppt文件 对于文件的所有类型,我都会用一篇文章进行说明,链接: Python百度文库爬虫之txt文件 Python百度文库爬虫之doc文件 Python百度文库爬虫之pdf文件 Python百度文库爬虫之ppt文件 Python百度文库爬虫之xls文件 一.网页分析 说明一下:分析doc文件和pdf文件非常相似,从爬取过程来说基本类似。因此我不会花费太多的语言来说明...

V_lq6h的博客 5251

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

利用Python进行百度文库内容爬取(二)——自动点击预览全文并爬取

本文是衔接上一篇:《利用Python进行百度文库内容爬取(一)》。 上回说到我们在对百度文库进行爬虫时,需要模拟手机端来进行登录,这样固然可以对文章进行爬取,但是很多时候并不是非常智能的翻页或者是点击继续阅读,基于最简单的百度文库爬取方法,在这边博客中,我们实现了自动点击预览全文并进行全文的爬取。 首先我们先进行上次内容的回顾:传送门:利用Python进行百度文库内容爬取(一) 1、模仿...

Kanny 5241

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

使用python中的Selenium爬取百度文库word文章

参考文章:Python3网络爬虫(九):使用Selenium爬取百度文库word文章,链接为:https://blog.youkuaiyun.com/c406495762/article/details/72331737,感谢作者。 python版本:3.6 运行平台:windows 浏览器:chrome 本文是在该参考文章的基础上写作,请各位在阅读参考文章的基础上再阅读本文,关于Selenium库...

weixin_39603637的博客 1332

Python实现数据技术|爬虫便可获取免费百度文库付费文档

相信大家在百度文档中看到了比较合适的文档之后就有了想下载学习一下的想法,但是有些时候文章更多的需要付费下载,针对于文档中能发现语句是分为一个一个的标签中的文本进行输出的。如果你有耐心和任劳任怨的想法,可以检查页面的元素进行一条一条的粘贴复制。这里提供一个不用花钱、不用浪费时间的方法进行快速而又简洁的方法实现以上功能。 搜索百度文库查找到自己想要的文档,复制下来URL网址保存到记事本以作备用。 ...

寄居蟹的博客 1万+
上一篇: 6个新手入门Python大礼包,请查收!
下一篇: 程序员兼职可以从什么平台接私活?
大模型产品经理
博客等级 码龄3年 1万+粉丝 1120原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值