首页 > 编程语言 > 详细

从应用的角度去学习Python--为孩子下载课本

时间:2020-02-14 21:08:46      阅读:53      评论:0      收藏:0      [点我收藏+]

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

在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--为孩子下载课本

原文:https://www.cnblogs.com/xiaolee-tech/p/12309482.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!