Python爬取某平台付费文档,确定不来薅羊毛吗?

导语:

哈喽,哈喽~当代大学生写作业时,emmmm…先看一眼,ok有点印象。
在这里插入图片描述
想翻书时,这是第几页?怎么这么干净,是这里吗…

这时“学小易”就很友好了,但是唯一不足的一点是,只有答案,没有过程。

浏览器也很友好,浏览到关键地方要钱,更别说想下载下来复习了…
在这里插入图片描述
今天呢,小编教大家用python如何免费下载付费文档资料,我再也不用担心下载资料要钱啦!也不用担心期末复习啦!
在这里插入图片描述

正文:

基本开发环境

Python 3.6

Pycharm

相关模块的使用

import osimport requestsimport time import reimport json from docximport Document from docx.sharedimport Cm

目标网页分析
在这里插入图片描述
网站的文档内容,都是以图片形式存在的。它有自己的数据接口

接口链接:

https://openapi.book118.com/getPreview.html?&project_id=1&aid=272112230&t=f2c66902d6b63726d8e08b557fef90fb&view_token=SqX7ktrZ_ZakjDI@vcohcCwbn_PLb3C1&page=1&callback=jQuery18304186406662159248_1614492889385&_=1614492889486

在这里插入图片描述

接口的请求参数

第一页:
在这里插入图片描述

第二页:
在这里插入图片描述

第三页:
在这里插入图片描述
如上图所示,翻页参数改变的是page 每次加6。

整体思路请求网页返回response数据(字符串)通过re模块匹配提取中间的数据(列表)索引取0(字符串)通过json模块是把提取出来的数据转换成json模块通过遍历获取每张图片的url地址保存图片到本地文件夹

把图片保存到word文档

def download():content = 0for page in range(1, 96, 6):# 给定 2秒延时time.sleep(2)# 获取时间戳now_time = int(time.time() * 1000)url = 'https://openapi.book118.com/getPreview.html'# 请求参数params = {'project_id': '1','aid': '272112230','t': 'f2c66902d6b63726d8e08b557fef90fb','view_token': 'SqX7ktrZ_ZakjDI@vcohcCwbn_PLb3C1','page': f'{page}','_': now_time,}# 请求头headers = {'Host': 'openapi.book118.com','Referer': 'https://max.book118.com/html/2020/0427/8026036013002110.shtm','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}response = requests.get(url=url, params=params, headers=headers)# 使用正则表达式提取内容result = re.findall('jsonpReturn\((.*?)\)', response.text)[0]# 字符串转json数据json_data = json.loads(result)['data']# 字典值的遍历for value in json_data.values():content += 1# 拼接图片urlimg_url = 'http:' + valueprint(img_url)headers_1 = {'Host': 'view-cache.book118.com','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}# 请求图片url地址 获取content二进制数据img_content = requests.get(url=img_url, headers=headers_1).content# 文件名img_name = str(content) + '.jpg'# 保存路径filename = 'img\\'# 以二进制方式保存 (图片、音频、视频等文件都是以二进制的方式保存)with open(filename + img_name, mode='wb') as f:f.write(img_content)

爬虫部分的代码还是比较简单的,没有什么特别的难度。

爬取这些文档,都是需要打印或者查询所以要把这些单张的图片都保存到word文档里面。

写入word文档

1、文件夹中所有图片的文件名。

正常的操作大家都是知道使用os模块就可以获取了,但是这里有一个问题

path = './img/'lis = os.listdir(path)print(lis)>>>['1.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg', '15.jpg', '16.jpg', '17.jpg', '18.jpg', '19.jpg', '2.jpg', '20.jpg', '21.jpg', '22.jpg', '23.jpg', '24.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg']

在这里插入图片描述
在文件夹中都是有序排列循序的,但是用os模块读取出来的文件名,都是无序的,这样保存的话会导致文档内容循序错乱,这不是我们想要的。

所以需要把文件名都排序输出。

path = './img/'lis = os.listdir(path)c = []for li in lis:index = li.replace('.jpg', '')c.append(index)c_1 = sorted(list(map(int, c)))new_files = [(str(i) + '.jpg') for i in c_1]print(new_files)>>>['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg', '15.jpg', '16.jpg', '17.jpg', '18.jpg', '19.jpg', '20.jpg', '21.jpg', '22.jpg', '23.jpg', '24.jpg']

排序好之后,通过docx模块对其进行写入。

document.add_picture(img_path, width=Cm(17), height=Cm(24))document.save('tu.doc')  # 保存文档

一定要设置写入图片的大小,不然图片太大,排版不好看。

写完之后把图片都删除掉

os.remove(img_path)

完整实现效果
在这里插入图片描述
在这里插入图片描述
最后我们下载下来的每一页都是一张图片。

结尾:

文章就写到这里结束啦~大家喜欢的记得点点赞
需要完整的项目源码的可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/9472.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python是否需要付费?

Python是否需要付费? Python是一种高级动态编程语言,文件以.py为扩展名。它具有广泛的应用,包括构建网站、数据分析和科学计算等领域。Python是一种免费开源软件,在大多数情况下不需要任何费用。然而,在某些情况下&am…

python算法面试题(一)

1、给定一个包含红色、白色和蓝色、共n 个元素的数组nums,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、1 和 2 分别表示红色、白色和蓝色;必须在不使用库的sort函数的情况下解决…

实用版ChatBing论文阅读助手教程+新测评

实用版ChatBing论文阅读助手新测评 AI进化(更新)的速度太快了!距离我上次的【Chat嘴硬!基于NewBing的论文调研评测报告】,才四天,它已经进化到快能用的地步了! 这次是我刷B站看到热门推荐&…

ChatGPT与Midjourney:用AI在Youtube和抖音上疯狂传播

释放被动收入和病毒式增长:2023年利用人工智能、YouTube短片、抖音、ChatGPT和Midjourney的力量,解锁被动收入和。病毒式增长:2023年利用人工智能、YouTube短片、抖音、ChatGPT和Midjourney的力量。你渴望挖掘YouTube短片和抖音的病毒潜力吗?想利用ChatG…

电脑使用代理连接,关掉代理之后连接不了网络的解决方法

关掉IP代理之后,IE浏览器代理状态还在,没有取消。需要取消的话,方法是点击IE浏览器上面的工具选项,如果是IE9及以上的版本,点击IE浏览器右上角的小齿轮图标。 具体的操作是:工具-Internet选项-连接-局域网设…

Huggingface的from pretrained的下载代理服务器方法设置

笔者需要用到下载预训练模型,但是此时TUNA和BSFU的镜像已经停止了,希望有可用的途径下载到位于网上的预训练模型。 此时查找了huggingface的文档Configuration 根据文档,该参数proxies (Dict, optional) A dictionary of proxy servers to …

内网服务器设置代理访问外网

内网服务器设置代理访问外网 背景 首先需要两台云服务器,其中服务器A无公网IP,服务器B有公网IP。 AB公网IP/110.40.255.180内网IP172.17.64.11172.17.64.17 配置A代理 直接配置环境变量即可。 cd /etc/profile.d/ vim proxy.sh进入proxy.sh文件后&…

HttpClient内外访问外网,添加代理(二)

HttpClient内外访问外网,添加代理(二) 问题背景HttpClient工具类调用url实例,附源码(一)HttpClient内外访问外网,添加代理(二) 项目搭建Lyric: 你已走得很远 …

Thinkphp5设置反代理

目的:节省OSS外网访问流出流量 购买了阿里云OSS的存储资源包后,发现还需要外网访问流出费用,内网访问是免费的。 百度得相关方法,即设置反向代理。前提是服务器和OSS存储桶需要属于同一个地区。 一、环境 服务器环境 Nginx 1.20…

端口转发与代理工具 内网代理 内网反弹代理

目录 一、LCX 二、nc 反弹 三、socks代理工具 四、frp 内网穿透利器 五、ngrok 内网穿透 理论上,任何接入互联网的计算机都是可访问的,但是如果目标主机处于内网,而我们又想和该目标主机进行通信的话,就需要借助一些端口转发…

Langchain对设置代理地址

可以通过如下方式对ChatOpenAI设置代理地址api_base from langchain.chat_models import ChatOpenAI import os OPENAI_API_BASEhttps://xxx/v1 openaichat ChatOpenAI(model_name"gpt-3.5-turbo", api_baseOPENAI_API_BASE) 参考源码如下 langchain源码 openai源…

巧用chatGPT解决生产者消费者问题

背景 学校的操作系统课程布置了一项实验,是关于生产者消费者问题的,一开始毫无头绪,通过搜索引擎搜索出来的内容也五花八门,之后就想着能不能借助chatGPT解决这一个实验。 实验要求 1.编写程序解决生产者与消费者问题&#xff…

用户注册页面接入短信验证功能的注意点?

网站或者app的用户注册页面,在接入手机短信验证接口的时候,多少都会遇到一些问题,这里就将这些问题及处理方案分享一下: 一、注册页面被刷 如果注册页面未做必要的防范的话,页面上的短信接口很容易被刷,造…

tp短信验证码(配置以及使用)

阿里云短信验证码 今天搞了一个短信的验证码,用的是阿里云的平台,https://cn.aliyun.com/ss/?k%E7%9F%AD%E4%BF%A1api,免费的验证码测试,不用充钱了。阿里的api有很多也有很多免费测试的接口(其实冲一块钱&#xff0c…

tp6 短信发送验证码

更改配置文件 app.php 里添加 //前端模块default_module >home,在config文件下cache.php里面去添加redis配置 // 缓存连接方式配置stores > [file > [// 驱动方式type > File,// 缓存保存目录path > ,// 缓存前缀prefix > ,// 缓存有效期…

有了域名想绑定域名邮箱?拥有域名后,如何免费绑定邮箱呢?如何使用【昵称@你的.域名】收发邮件

有了域名想绑定域名邮箱?拥有域名后,如何免费绑定邮箱呢?如何使用【昵称你的.域名】收发邮件 前提: 如文章标题,此篇文章的前提是“已经拥有了自己的域名” 有了自己的域名后,采用本篇文章的方式&#xf…

ios系统邮件怎么绑定QQ邮箱

一、做准备工作,开启IMAP/SMTP服务,怎么开启的教程就在↓如何开启QQ邮箱IMAP/SMTP服务?分享开启方法 - 三好电商网 然后你就获得了一串授权码 二、选择“邮件”app打开以下页面 三、选择QQ邮箱打开以下页面 四、电子邮件就填你的QQ邮箱账号…

其他邮箱如何绑定到常用的邮箱

背景介绍! 一般我们国人最最最常用的邮箱就是QQ邮箱了,能推送到QQ、能搞成自己喜好的风格等等功能确实值得青睐。 最大的优点还是:可以及时收到别人发来的消息 当然,还有其他的邮箱各有各自的用处。例如大学生母校为学生准备的…

ChatGPT 掀起抢人大战,提示词工程师年薪近34万

火爆的ChatGPT ChatGPT 引发的资本盛宴还在持续上演,每个人都在谈论它背后的AI技术,每个人都在担心自己会不会被AI替代,但很少有人注意到,这项技术带来的新就业岗位。 这种岗位被称为“提示工程师”(Prompt Engineer),…

ChatGPT之父传奇:8岁会编程,16岁出柜,2个月做到月活过亿

雷递网 雷建平 2月5日 聊天机器人ChatGPT的爆火,推出仅仅2个月,就达到月活过亿,成为历史上增长最快的消费者应用程序。 根据Sensor Tower数据,TikTok在全球推出后用约9个月时间达到1亿用户,Instagram用了30个月才达到同…