在这个数字化时代,从网络上获取并整理信息变得尤为重要。今天,我将与大家分享一个Python脚本,该脚本能够从微信公众号文章中爬取图片,并将这些图片整理成Word和PDF文档。这个脚本特别适用于需要将微信公众号内容转化为正式文档的场景,比如教育、研究或工作汇报。
一、项目背景
微信公众号因其丰富的图文内容,成为许多领域信息传播的重要平台。然而,有时候我们需要将这些内容整理成更为正式的文档格式,如Word或PDF,以便存档、分享或打印。手动操作既耗时又容易出错,因此,自动化工具显得尤为重要。
二、所需工具与库
- requests:用于发送HTTP请求。
- BeautifulSoup:用于解析HTML和XML文档。
- python-docx:用于创建和修改Word文档。
- docx2pdf:用于将Word文档转换为PDF。
- PyPDF2:用于操作PDF文件,如合并、拆分、旋转和删除页面等。
三、代码解析
-
导入必要的库:
import requests from bs4 import BeautifulSoup import datetime import os from docx import Document from docx.shared import Cm from docx2pdf import convert from PyPDF2 import PdfFileReader, PdfFileWriter
-
获取当前文件夹下所有图片张数:
file_name
函数通过遍历指定目录及其子目录,获取所有图片的路径,并按文件名排序。def file_name(file_dir): # print(root) # 当前目录路径 # print(dirs) # 当前路径下所有子目录 # print(files) # 当前路径下所有非目录子文件 path_list = [] for root, dirs, files in os.walk(file_dir): for i in range(len(files)): path = root + '\\' + files[i] path_list.append(path) # 按名称数字大小排序 path_list.sort(key=lambda x: int(x.split("\\")[-1].split(".")[0])) return path_list
-
获取微信公众号图片:
get_picture
函数通过发送HTTP请求获取微信公众号文章的HTML内容,并使用BeautifulSoup解析。它提取所有图片标签,并尝试下载图片到本地文件夹。
def get_picture(url):
global path
headers = {
'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
}
# 获取系统时间
curr_time = datetime.datetime.now()
# 将时间格式化为字符生成时间戳到时候给文件夹命名用
path = datetime.datetime.strftime(curr_time, '%Y%m%d%H%M')
# 检查是否存在这个文件夹
if os.path.exists(path):
print("属于这个时间点的文件夹已经创建好")
else:
# 不存在则创建
os.mkdir(path)
print("创建成功!!!!正在保存图片")
# 获取当前工作目录并加上之前的时间生成文件夹路径
dirname = os.getcwd() + '\\' + path + '\\'
# 向刚才输入的公众号链接里面发送请求
req = requests.get(url=url, headers=headers).content.decode()
# 用BeautifulSoup解析网页
soup = BeautifulSoup(req, 'lxml')
res = soup.select('img') # 获取该网页中所有的图片标签
a = 0
# 遍历所有的图片标签
for i in res:
if i.get("data-src") == None: # 如果这个标签内的data-src等于空的时候直接跳过
pass
else: