python爬取微信公众号文章图片并转为PDF
作者:三十岁开始学编程的大叔 发布时间:2021-02-02 06:53:31
标签:python,微信,公众号
遇到那种有很多图的微信公众号文章咋办?一个一个存很麻烦,应朋友的要求自己写了个爬虫。
2.0版本完成了!完善了生成pdf的功能,可根据图片比例自动调节大小,防止超出页面范围,增加了序号方面查看
#-----------------settings---------------
#url='https://mp.weixin.qq.com/s/8JwB_SXQ-80uwQ9L97BMgw'
print('jd3096 for king 2.0 VIP8钻石永久会员版')
print('愿你远离流氓软件每一天')
url=input('请输入网址:')
#-----------------get data----------------
import requests
import re
from bs4 import BeautifulSoup
import os
from PIL import Image
try:
os.makedirs('pics')
except:
pass
os.chdir('pics')
page=requests.get(url).text
soup = BeautifulSoup(page, 'html.parser')
jdata = soup.find_all('img')
pn=0
for i in jdata:
try:
src=i['data-src']
print(src)
rp = requests.get(src)
with open(str(pn)+'.jpg','wb+')as f : # 循环写入图片
print(str(pn)+'.jpg')
f.write(rp.content)
pn+=1
except:
pass
#--------------------make pdf--------------------
from fpdf import FPDF
import os
path=os.getcwd()
print(path)
pdf = FPDF()
pdf.set_auto_page_break(1)
imagelist = [i for i in os.listdir()]
imagelist.sort(key=lambda x: int(x.split('.')[0]))
print(imagelist)
for image in imagelist:
try:
img = Image.open(image)
w = img.width #图片的宽
h = img.height #图片的高
ii=h/w
print(ii)
if ii>1.41:
ww=int(250/ii)
pdf.add_page()
pdf.set_xy(0,0)
pdf.set_font('arial','B',14)
pdf.cell(60)
pdf.cell(70,10,image,border=0, ln=1, align='C')
pdf.image(os.path.join(path, image), w=ww, h=250)
else:
hh=int(180*ii)
pdf.add_page()
pdf.set_xy(0,0)
pdf.set_font('arial','B',14)
pdf.cell(60)
pdf.cell(70,10,image,border=0, ln=1, align='C')
pdf.image(os.path.join(path, image), w=180, h=hh)
except:
pass
pdf.output(os.path.join(path, "merge.pdf"), "F")
爬完了长这样:
PDF长这样,比例适中适合阅读
来源:https://blog.csdn.net/jd3096/article/details/122803904


猜你喜欢
- flask中的sqlalchemy 相比于sqlalchemy封装的更加彻底一些 , 在一些方法上更简单首先import类库:在CODE上查
- 最近运维上需要在测试环境调用http的post请求,实现自动化日切,我看了下我会的编程,也就python能符合我的要求,且简单好操作。但是在
- 【OpenCV】⚠️高手勿入! 半小时学会基本操作 ⚠️ 对象测量概述OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大.
- Mysql参数优化对于新手来讲,是比较难懂的东西,其实这个参数优化,是个很复杂的东西,对于不同的网站,及其在线量,访问量,帖子数量,网络情况
- 1.如何构建应用框架一般来说构建应用框架包含3个部分:命令行参数解析配置文件解析应用的命令行框架:需要具备 Help 功能、需要能够解析命令
- 如果没有读过上面内容的读者,有兴趣的可以一阅。在上面的使用JdbcTemplate一文中,主要通过spring提供的JdbcTemplate
- 首先,eval模式和train模式得到不同的结果是正常的。我的模型中,eval模式和train模式不同之处在于Batch Normaliza
- 工欲善其事必先利其器,一个好的工具能让起到事半功倍的效果,Python社区提供了足够多的优秀工具来帮助开发者更方便的实现某些想法,下面这几个
- 安装环境:CentOS7 64位 MINI版官网源码编译安装文档:http://dev.mysql.com/doc/refman/5.7/e
- 前言MYSQL Command Line Client是一款用于输入密码的程序,相信大多数用户在使用这款程序的时候都有遇到这样的一种情况吧?
- 问题你想在一个消息传输层如 sockets 、multiprocessing connections 或 ZeroMQ 的基础之上实现一个简
- 网络通用urllib -网络库(stdlib)。requests -网络库。grab – 网络库(基于pycurl)。pycurl – 网络
- 本次分享将讲述如何在Python中对多个list的对应元素求和,前提是每个list的长度一样。比如:a=[1,2,3], b=[2,3,4]
- 方法一、自定义函数实现,不方便自定义调用function FillZero(p) {return new Array(3 - (p +
- 本文实例讲述了js实现简单的可切换选项卡效果的方法。分享给大家供大家参考。具体如下:如图,最简单的纯粹的选项卡第一步,当然是先写html代码
- python web.py启动https端口 web.py启动https端口需要ssl
- 前台页面 $.ajax({ type: "post", contentType: "application/j
- 1.编写python flask代码,简单写一个加法的接口,命名为sum.pyimport jsonfrom flask import Fl
- 1.selenum:三方库。可以实现让浏览器完成自动化的操作。2.环境搭建2.1 安装:pip install selenium2.2 获取
- 项目开发中文件的读写是必不可少的下面来简单介绍一下文件的读读文件,首先我们要有文件那我首先自己创建了一个文本文件password.txt内容