最近,孩子上课都没有课本,老师给发的是一个微信链接,打开看可以,打印打不全。怎么办?我就想既然能看,从爬虫的角度就一定可以抓下来!

在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--为孩子下载课本的更多相关文章

  1. 零基础学习 Python 之前期准备

    写在之前 从今天开始,我将开始新的篇章 -- 零基础学习 Python,在这里我将从最基本的 Python 写起,然后再慢慢涉及到高阶以及具体应用方面.我是完全自学的 Python,所以很是明白自学对 ...

  2. 【Python】Java程序员学习Python(三)— 基础入门

    一闪一闪亮晶晶,满天都是小星星,挂在天上放光明,好像许多小眼睛.不要问我为什么喜欢这首歌,我不会告诉你是因为有人用口琴吹给我听. 一.Python学习文档与资料 一般来说文档的资料总是最权威,最全面的 ...

  3. 学习python最难的就是入门,而这文章刚好适合初学者!

    Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等众多领域.目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube.Dropbox.BT ...

  4. 【转】学习Python的19个资源

    原文链接:[译]学习Python编程的19个资源 用Python编写代码一点都不难,事实上它一直被赞誉为最容易学的编程语言.如果你准备学习web开发, Python是一个不错的开始,甚至想做游戏的话, ...

  5. 学习 Python 编程的 19 个资源 (转)

    学习 Python 编程的 19 个资源 2018-01-07 数据与算法之美 编译:wzhvictor,英文:codecondo segmentfault.com/a/119000000418731 ...

  6. 学习Python要知道哪些重要的库和工具

    本文转自:https://github.com/jobbole/awesome-python-cn 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具. ...

  7. 学习Python的day1

    自己以前从来没有写博客的想法,但是学Python,里面的老师也说了,写博客可以加深自己的记忆,也能回顾内容.还能给别人参考.挺值的.2017-09-16 一. Python介绍 python的创始人为 ...

  8. 一个Js开发者学习Python的第一天

    原文地址:小寒的博客 https://www.dodoblog.cn/blogs/5bf6b8fa0c09883d0f8aad13 作为一个有着足足两年半学习经验和一年半开发经验的js开发者,看着js ...

  9. Linux运维人员如何学习python编程

    Linux运维人员如何学习python编程 从不会写代码,到自己独立能写代码解决问题 .这个问题很重要!盲目学习所谓的项目,最后 还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目 ...

随机推荐

  1. Hibernate(四)

    ==================================投影(查询)=============================投影查询:查询一个持久化类的一个或多个属性值    1.将每条 ...

  2. 每日一练_PAT_B1001

    鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”.鲁宾逊先生和多多都很开心,因为花生正是他们的最爱.在 ...

  3. gcc 相关总结 动态链接库

    #include < >与#include " " #include < >:直接到系统指定的目录中去找头文件. #include " " ...

  4. tensorflow variable scope 变量命名空间和变量共享

    import tensorflow as tf def f(): var = tf.Variable(initial_value=tf.random_normal(shape=[2])) return ...

  5. GDAL利用地理坐标读取图像像元值

    最近的一个项目需要在电子海图中下载已知水深点,导出点的地理坐标(经纬度).然后在arcgis中打开这些地理坐标输出为shp,利用GDAL读取不同波段的点对应的像元值,从而构建水深和像元值的对应关系. ...

  6. 消息队列MQ集合

    消息队列MQ集合 消息队列简介 kafka简介 Centos7部署zookeeper和Kafka集群 .

  7. 准备 Python3 和 Python 虚拟环境

    1.安装依赖包 yum -y install wget gcc epel-release git 2.安装 Python3.6 yum -y install python36 python36-dev ...

  8. 大数四则运算之减法运算-----c语言版

    /* 分三种情况: 1.减数长度大于被减数 交换减数与被减数,输出负号,方便减 2.减数长度等于被减数(分三种情况) a.减数大于被减数,类似1情况1 b.减数等于被减数,两数相等,直接输出0,完成. ...

  9. .gitignore配置规则

    1.gitignore文件 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 .gitignore 文件的方法.这个文件每一行保存了一个匹配的规则例如: # 此为注释 – 将被 ...

  10. 修改kali软件源并配置网络

    一.配置kali使用xshell连接 查看ssh服务状态 # service ssh status 开启ssh服务 # service ssh start 修改ssh配置文件 # vi /etc/ss ...