python爬取微信公众号图片并生成word文档

由于微信公众号中,有些推文是以图片的形式推送,若想提取图片,需要先下载下来。如果图片数量多,就需要更多的时间,降低效率。因此写下此代码,可以将推文图片提取并插入word中生成文档,以提高提取效率。

一、代码

# -*- coding = utf-8 -*-
# @Time : 2021/7/10 21:07
# @Author : 陈良兴
# @File : python爬取微信公众号图片并生成word.py
# @Software : PyCharmimport requests
from bs4 import BeautifulSoup
import datetime
import os
from docx import Document                      # 导入docx包
from docx.shared import Cm                    # 设置页面边距# 获取微信公众号图片
def get_picture(url):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等于空的时候直接跳过passelse:                                   # 否则获取data-src里面的内容获取图片链接print(f'链接:{i.get("data-src")}类型为:{i.get("data-type")}')# 尝试去保存图片 如果保存图片错误则抛出异常try:# 拼接路径+a.jpg a是等于数字 每添加一个 a自增一 相当于是给图片命名 并且以二进制的形式写入with open(dirname + f'{a}.{i.get("data-type")}', 'wb') as f:# 向这个图片发送请求 并将图片的二进制写入f.write(requests.get(url=i.get("data-src"), headers=headers).content)f.close()                   # 关闭写入a = a + 1                   # a自增一except Exception as e:              # 抛出异常 增加程序强壮性print("该链接为空自动跳过!")print(f"此次一共成功保存图片{a}张")# 生成word文档
def Generate_word():Doc = Document()# 设置页面边距sec = Doc.sections[0]  # sections对应文档中的“节”sec.left_margin = Cm(0)  # 以下依次设置左、右、上、下页面边距sec.right_margin = Cm(0)sec.top_margin = Cm(0)sec.bottom_margin = Cm(0)# 插入图片for i in range(1, 128):Doc.add_picture(r'G:\python_demo\python爬取微信公众号图片\202107102104\{}.png'.format(i), width=Cm(21.88), height=Cm(29))    # Cm是厘米i += 1Doc.save(r'./二年级语文(上册).docx')if __name__ == '__main__':url = input("请输入url:")get_picture(url)print("Saving......")Generate_word()print("文档创建成功!")

二、实例

1、复制公众号推文链接: 2020部编版二年级语文上册电子课本【提前预习】。

2、运行程序,在交互窗口输入推文链接,运行。

python爬取微信公众号图片并生成word文档相关推荐

  1. html如何获取请求头变量的值。_如何使用 Python 爬取微信公众号文章

    我比较喜欢看公众号,有时遇到一个感兴趣的公众号时,都会感觉相逢恨晚,想一口气看完所有历史文章.但是微信的阅读体验挺不好的,看历史文章得一页页的往后翻,下一次再看时还得重复操作,很是麻烦. 于是便想着能 ...

  2. python 微信公众号发文章_如何使用 Python 爬取微信公众号文章

    我比较喜欢看公众号,有时遇到一个感兴趣的公众号时,都会感觉相逢恨晚,想一口气看完所有历史文章.但是微信的阅读体验挺不好的,看历史文章得一页页的往后翻,下一次再看时还得重复操作,很是麻烦. 于是便想着能 ...

  3. 如何用python爬取公众号文章_如何使用 Python 爬取微信公众号文章

    我比较喜欢看公众号,有时遇到一个感兴趣的公众号时,都会感觉相逢恨晚,想一口气看完所有历史文章.但是微信的阅读体验挺不好的,看历史文章得一页页的往后翻,下一次再看时还得重复操作,很是麻烦. 于是便想着能 ...

  4. python爬虫爬取微信_如何使用 Python 爬取微信公众号文章

    我比较喜欢看公众号,有时遇到一个感兴趣的公众号时,都会感觉相逢恨晚,想一口气看完所有历史文章.但是微信的阅读体验挺不好的,看历史文章得一页页的往后翻,下一次再看时还得重复操作,很是麻烦. 于是便想着能 ...

  5. 如何使用 Python 爬取微信公众号文章

    我比较喜欢看公众号,有时遇到一个感兴趣的公众号时,都会感觉相逢恨晚,想一口气看完所有历史文章.但是微信的阅读体验挺不好的,看历史文章得一页页的往后翻,下一次再看时还得重复操作,很是麻烦. 于是便想着能 ...

  6. python爬取微信公众号文章(包含文章内容和图片)

    之前虽然做过网页爬取,但微信爬取一直没做过,因为我一直不知道网页可以进微信公众平台,只用过微信客户端进微信公众号.既然可以通过网页进微信公众平台,那么爬取微信公众号文章就流程上就没太多难度了. 自己在 ...

  7. python爬取正确但不出文件_使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)...

    前言 第一次写博客,主要内容是爬取微信公众号的文章,将文章以PDF格式保存在本地. 爬取微信公众号文章(使用wechatsogou) 1.安装 pip install wechatsogou --up ...

  8. python爬取微信公众号文章

    爬取微信公众号文章 获取微信公众号的url 获取每一篇文章的url ​ 选择一个公众号进入,选择一个目录进入后点复制链接,然后去浏览器打开.按F12打开检查的模式,在Console中输入$x('标签路 ...

  9. python爬取微信公众号_python使用webdriver爬取微信公众号

    本文实例为大家分享了python使用webdriver爬取微信公众号的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- from selenium import we ...

  10. Python爬取微信公众号文章、点赞数

    代码还是热乎的,只要你细心一步步的慢慢调试,绝壁没问题 前期准备 订阅号: Python: Fiddler: 微信账号: 流程 使用用微信公众号生成cookie 使用Fiddler抓取微信公众号数据, ...

最新文章

  1. 三维重建10:点云配准和点云匹配
  2. java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件
  3. java 泛型的上限与下限、泛型通配符、泛型上下限
  4. winpython anaconda_Windows:安装 Anaconda《 Python:基础 》
  5. java判断数组值类型,判断(1分) Java语言中的数组元素只能是基本数据类型而不能为对象类型。...
  6. scratch 编程 镜像画
  7. 定性分析与定量分析的区别
  8. 如何高效录制和分享教学视频?我尝试了芦笋
  9. 国产计算机系统哪个好,5大国产手机操作系统分析评测,你更中意谁?
  10. 计算机语言里的堆栈是什么意思,汇编语言中的堆栈是什么?
  11. MySQL查学生年龄30到40之间_MYSQL查询练习 1
  12. HTML+CSS+VUE 简易的便签
  13. 爬虫基础之HTTP基本原理
  14. while、do...while、for循环的使用
  15. oracle 10231事件,Oracle数据块损坏篇之10231内部事件
  16. Mac的自带软件grapher
  17. C++调用tinyxml2读写xml
  18. 【css 】hank 写法
  19. ARM架构与编程--基于STM32F103 (1)LED原理图
  20. 「悦数图数据库」亮相中国国际信息通信展览会,推进图技术产业化发展

热门文章

  1. python 操作ps脚本_脚本之王python完美实现换脸技术,毫无PS痕迹!
  2. 拼音分词器_自动补全
  3. css样式中的border-radius属性
  4. Android使用DatePickerDialog日期控件使用主题android:Theme.Holo.Light.Dialog有白边的问题解决
  5. Fluorescent-PEG2000-Pyrene,荧光素和芘丁酸修饰的PEG,Pyrene-PEG2000-FITC
  6. java 错误 找不到符号_java错误:找不到符号
  7. hard link and symbolic link
  8. rl滤波器原理_滤波器基本知识
  9. 用神经网络分类根号2与根号x的数据汇总
  10. Unity官网注册账号绑定手机国籍更改失败