从应用的角度去学习Python--为孩子下载课本
最近,孩子上课都没有课本,老师给发的是一个微信链接,打开看可以,打印打不全。怎么办?我就想既然能看,从爬虫的角度就一定可以抓下来!
在Chrome中打开网址,好家伙!一堆的Script之类的玩意儿。经过一番查找,发现他所有的图片都在一个div中。然后, 所有的图片的url都在里边。
格式大致像下面这个样子:
https://xxx.xxx.xxx/xxxx_jpg/Yf5NpblQ4YialfPteJjMWGJtpCIGzyXuKd4zEFbAZ8eKAy9sHHFZWfaZK3mQh1XL0rdlLRdcflgxQY9ibK9BcAxw/640?wx_fmt=jpeg
避免一些不必要的麻烦,网址我隐去了。顺便说明:咱就是为了学习,没别的。
虽然,我知道Xpath,BS4可以解决,可我还没有详细研究,所以,就用正则好了。上代码:
import requests
import re def write_jpg(img_url, filename):
img_data = requests.get(url=img_url, headers=headers).content
with open('./eng/' + filename + '.jpg', 'wb') as fp:
fp.write(img_data) #这个网址好长好长,省略
url = 'https://mp.weixin.qq.com/...................'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
#这一块先把那个div整下来
response = requests.get(url=url, headers=headers).text
str_re1 = '<div class="rich_media_content " id="js_content" style="visibility: hidden;">(.*?)</div>'
pat1 = re.compile(str_re1, re.S)
items = re.findall(pat1, response)
#再把所有的图片URL抓下来,存入Items2中
str_re2 = 'https://.*?jpeg'
pat2 = re.compile(str_re2, re.S)
items2 = re.findall(pat2, items[0])
#然后,把每一张图片下载下来,存入eng目录中
for i in range(0, len(items2)):
write_jpg(items2[i], str(i))
print("the %d page downloads successful!" % i)
不一会,几十张图片下载完毕,本来想一次存入Word中,打印文档。后来想,还不如生成一个PDF。轮子肯定有人造好了。百度!果然有个img2pdf库已经为我准备好了。
还是上代码吧!
import img2pdf
import os def gen_file_list(dir_s):
f_list = os.listdir(dir_s)
for i in range(0, len(f_list)):
f_list[i] = dir_s + '/' + f_list[i]
return f_list sourc_dir = './eng'
# print(gen_file_list(sourc_dir)) a4input = (img2pdf.mm_to_pt(210), img2pdf.mm_to_pt(297))
layout_fun = img2pdf.get_layout_fun(a4input) with open('english6x.pdf', 'wb') as f:
f.write(img2pdf.convert(gen_file_list(sourc_dir), layout_fun=layout_fun))
代码不复杂,我就不解释了。之所以把这个东西发上来,主要是感觉学东西,还是从实用角度比较快,也比较容易有成就感!
从应用的角度去学习Python--为孩子下载课本的更多相关文章
- 零基础学习 Python 之前期准备
写在之前 从今天开始,我将开始新的篇章 -- 零基础学习 Python,在这里我将从最基本的 Python 写起,然后再慢慢涉及到高阶以及具体应用方面.我是完全自学的 Python,所以很是明白自学对 ...
- 【Python】Java程序员学习Python(三)— 基础入门
一闪一闪亮晶晶,满天都是小星星,挂在天上放光明,好像许多小眼睛.不要问我为什么喜欢这首歌,我不会告诉你是因为有人用口琴吹给我听. 一.Python学习文档与资料 一般来说文档的资料总是最权威,最全面的 ...
- 学习python最难的就是入门,而这文章刚好适合初学者!
Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等众多领域.目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube.Dropbox.BT ...
- 【转】学习Python的19个资源
原文链接:[译]学习Python编程的19个资源 用Python编写代码一点都不难,事实上它一直被赞誉为最容易学的编程语言.如果你准备学习web开发, Python是一个不错的开始,甚至想做游戏的话, ...
- 学习 Python 编程的 19 个资源 (转)
学习 Python 编程的 19 个资源 2018-01-07 数据与算法之美 编译:wzhvictor,英文:codecondo segmentfault.com/a/119000000418731 ...
- 学习Python要知道哪些重要的库和工具
本文转自:https://github.com/jobbole/awesome-python-cn 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具. ...
- 学习Python的day1
自己以前从来没有写博客的想法,但是学Python,里面的老师也说了,写博客可以加深自己的记忆,也能回顾内容.还能给别人参考.挺值的.2017-09-16 一. Python介绍 python的创始人为 ...
- 一个Js开发者学习Python的第一天
原文地址:小寒的博客 https://www.dodoblog.cn/blogs/5bf6b8fa0c09883d0f8aad13 作为一个有着足足两年半学习经验和一年半开发经验的js开发者,看着js ...
- Linux运维人员如何学习python编程
Linux运维人员如何学习python编程 从不会写代码,到自己独立能写代码解决问题 .这个问题很重要!盲目学习所谓的项目,最后 还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目 ...
随机推荐
- python学习Day04--列表
[主要内容] 1.列表的索引: lst=[1,2,3,4,5,6] print(lst[0]) #获取第一个元素 lst[1]='你好' #改变列表中的值 2.列表的切片: lst=[ ...
- SASS用法入门
本文参考了 阮一峰 老师对 SASS 用法的讲解. 学过 CSS 的人都知道,它不是一种编程语言,在日常的开发中,经常要写大量的 css 代码,有很多的重复代码,效率很低.Sass 是一个 CSS 的 ...
- 如何查看dll或者exe是X86还是X64架构
使用VS里面的dumpbin.exe 用法:dumpbin /headers *.exe(需要运行vcvarsall.bat) C32 or Winhex PE L为x86.PE d†为x64 P ...
- 机器学习(ML)七之模型选择、欠拟合和过拟合
训练误差和泛化误差 需要区分训练误差(training error)和泛化误差(generalization error).前者指模型在训练数据集上表现出的误差,后者指模型在任意一个测试数据样本上表现 ...
- java4选择结构 二
public class jh_01_为什么使用switch选择结构 { /* * 韩嫣参加计算机编程大赛 * 如果获得第一名,将参加麻省理工大学组织的1个月夏令营 * 如果获得第二名,将奖励惠普笔记 ...
- DevOps:运维体系建设
简介 运维体系的建设的目的在于方便运维工作,通过自动化.规范化.流程化的操作方法提高运维效率,打造一个安全.可靠.高效.可追踪.可回溯的运维环境,实现一个高可用.高并发.具备高容错.自我修复.故障能快 ...
- 《N诺机试指南》(七)排版类问题
1.菱形问题: 解析: 主要通过打印空格和星形来打印整个图形,将整体分为=上三角形+下三角形 首先观察上三角形可以发现:第一行2个空格1个星.第二行1个空格3个星.第三行0个空格5个星 空格数 ...
- 性能测试监控平台Grafana的使用
Grafana的监控是基于数据库的,通过插件获取到服务器性能并存储到数据库中,然后使用Grafana连接数据库形成可视化的图表.本篇给大家介绍对服务器的性能的监控,下一篇会介绍对于mysql数据库的监 ...
- aws 社交媒体技术大会 部分总结
早上会议总结:. 1. 介绍了aws的应用,无技术知识点.略 2. 云原生: 就是一种在云中原生的一种技术 新常态:已经成为一种常态,基本都有的服务都可以部署在云端. 对 “互联网+” 和 “+互联 ...
- 自动化运维工具:ansible
自动化运维工具:ansible Ansible(1):简介和基本概念 Ansible(2):安装配置 Ansible(3):ansible资源清单管理 Ansible(4):常用模块