python自动化办公之爬取目录样式写入word文档实战!

Python3爬虫之爬取某一路径的所有html文件 要离线下载易百教程网站中的所有关于Python的教程,需要将Python教程的首页作为种子url:http://www.yiibai.com/python/,然后按照广度优先(广度优先,使用队列;深度优先,使用栈),依次爬取每一篇关于Python的文章。为了防止同一个链接重复爬取,使用集合来限制同一个链接只处理一次。 使用正则表达式提取网页源码里边的文章标题和文章url,获取到了文章的url,使 阅读详情

看见朋友每天重复地从网页里把目录复制粘贴到word里,觉得很不智能。于是想到用Python的自动化办公功能,来解救他!比如,下面这个图就是HTML里的内容,我要把它提取出来写入到word里面,还要带上这本书的标题,给word命名。写好了就可以批量处理!!!是不是很妙o( ̄︶ ̄)o
在这里插入图片描述
还好朋友会用一个sitemapX工具,把网页中的目标路径都写入到一个txt文件中。
在这里插入图片描述
调用的库:
import time
import re
import urllib.request
import os
import pypandoc
from docx.oxml.ns import qn
from docx import Document
这个小项目做起来,还是有几个重点需要注意的地方:

(1)每次解析30个HTML文件,之后需要更新原来的txt文件,不然每次处理的都是前30个HTML文件。

#获取网页列表
def input_html(txtname):
    with open(txtname,'r') as f:
        content = f.read()
    s1 = content.split('\n')#讲字符串转为列表
    html_num = len(s1)#链接总个数
    print('该文件含有{}个链接'.format(html_num))
    
    s2 = s1[30:]#剩下的链接
    new_html = '\n'.join(s2)#更新
    new_html_num = len(s2)#链接总个数
    print('完成这次任务,还剩{}个链接'.format(new_html_num))
    return new_html

#创建新的文档,以时间作为区分
import time
nowtime = time.strftime("%Y%m%d%H%M%S", time.localtime())#当前时间作为新的文件表示
with open("sitemap" + nowtime + ".txt", "w", encoding='utf-8') as f:
    f.write(input_html("sitemap.txt"))
    f.close()
1234567891011121314151617181920

在这里插入图片描述
(2)读取HTML文件,提取其中所需要的的内容,需要使用正则表达式,主要提取两部分,一个是标题,一个是带有目录的内容。

import re
import urllib.request      #导入request模块
def Parse_html(url):
    res = urllib.request.urlopen(url)      #调用urlopen()从服务器获取响应界面
    html = res.read().decode('utf-8')     #对返回的响应数据解码,并赋值给html
    return html
html=Parse_html(url)
#提取源文件一部分作为内容部分
str1=re.findall('<div class="DetailInfo">([\s\S]*?)<div class="Column ElectronicIntro"',html)#取两者之间的部分
str1[0]=str1[0].replace('<div class="Column ColumnCatalog" id="columnCatalog" style="display: none">','<div class="Column ColumnCatalog" id="columnCatalog" style="">')
str1_1=re.sub('</span>[\s]*?<li>','</span>\n</li><li>',str1[0])#补缺失在部分</li>
str1_2=re.sub('</span>[\s]*?</ul>','</span>\n</li></ul>',str1_1)#补缺失在部分</li>
#提取源文件一部分作为标题部分
str2=re.findall("<h1[\s\S]*?</h1>",html)#匹配含换行符[\s\S]*?,之间匹配任何字符,含换行符

123456789101112131415

怎样查看网页对应的目标图片链接呢?使用chrome浏览器打开上述网页,然后按F12,就会在右边看到这个网页的源代码,按照我下图的三步走,点击小箭头后,把鼠标移动到目标图片,悬浮即可,这个时候右边会高亮显示对应这个目标部分的网页源代码。就可以看到我用红色框框起来的部分,src后面引号的部分就是这个图片的连接。
在这里插入图片描述

这中间还是遇到了两个问题,一个是的缺失,会导致一部分内容不可显示;另外一个问题style=“display: none"这个部分会把目录隐藏,所以,需要将它替换成style=”"。这部分就涉及到了HTML的结构和正则表达式。

(3)把提取的内容拼接起来,重新形成一个HTML文件。

import os
def write_html(title,content):
    html1 = open("n.html", "w")#写成html
    html1.write(title)#标题
    html1.write(content)#内容
    html1.close()
#把处理好的内容写入HTML文件
write_html(str2[0],str1_2)

123456789

(4)将HTML文件写入Word

import pypandoc
def html_docx(html_path,docx_path):
    f = open(html_path,"r",encoding='gbk')
    html1 = f.read()
    output = pypandoc.convert_text(html1, 'docx', 'html', outputfile=docx_path)  # 将 html 代码转化成docx
#把新的HTML文件写入Word,自带格式
html_docx("n.html","file1.docx")
1234567

这个阶段有个难点,就是pypandoc的导入,在公司用的服务器,调试起来没有问题,但是在家里的电脑报错了NO pandoc was found。具体见下图:

在这里插入图片描述
在网上找了很多方法尝试,主要是按照报错的指引去做的,可是都没有得到改善。最后找到一篇帖子https://blog.youkuaiyun.com/qq_43741748/article/details/105454719,《下载和安装Pandoc(Windows和Mac版本)》从Pandoc的官网下载https://www.pandoc.org/installing.html,直接运行安装问题就解决了。
在这里插入图片描述
(5)根据需求进一步调整Word内容,主要是字体调成微软雅黑,增加页脚,用内容的标题给文件命名,存储下来。

#修改word样式,给文件命名,增加页脚
from docx import Document
document = Document('file1.docx')
document.paragraphs[0].text=document.paragraphs[0].text.replace("[题库]","")
document.paragraphs[0].text=document.paragraphs[0].text.replace("[电子书]","")
f=document.paragraphs[0].text
filename=f#取文件名
sec = document.sections# word文档中章节 section 对象

sec0 = sec[0]  # 获取章节对象
font0 = sec0.footer  # 返回页脚对象
#print(font0)
# 设置页脚
#print(font0.paragraphs)
font0_par = font0.paragraphs[0]
font0_par.add_run('                     星蓝海学习网-考研资格考试,电子书题库,视频答案详解')
from docx.oxml.ns import qn
document.styles['Normal'].font.name = u'微软雅黑'
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑') # 将段落中的所有字体
document.save('{}.docx'.format(filename))
1234567891011121314151617181920

对第一步的列表还需要循环遍历,属于基础就没有再赘述了,还有就是在循环遍历的时候,需要增加异常处理的部分。处理结果贴给大家看看,
在这里插入图片描述
在这里插入图片描述

在docx文档处理的部分,标题还不能更改样式,日后还需要进一步完善!

近期有很多朋友通过私信咨询有关Python学习问题。为便于交流,点击蓝色自己加入讨论解答资源基地

python使用pypandoc将html转换成word文档 python将html页面转换为word文档 使用前: 需先下载pandoc插件。pandoc import pypandoc # -*- coding:utf-8 -*- import pypandoc # html文档的位置 html_path = r"ceshi_to_word.html" # 转换生成word文档的位置 word_path = r"ceshi_to_word.docx" pypandoc.convert_file(html_path, 'docx', outputfile=wo 阅读详情

相关推荐

职场必备技能1学会自动化办公&用代码写到word文档里

1、文档必须是关闭的,否则保存,因为权限不够2、 #https://www.biqg.cc发链接要加上域名否则无效报错# 拿简介# 拿到小说的标题---是文本# 放入到文档中# 让简介加粗---分批加add_runp.add_run('简介:\n').bold = True拿小说目录和章节与正文正文# 拿目录---正文链接# 拿到对应的正文链接# 发起请求,发到正文中,拿到响应对象text_html# https://www.biqg.cc发链接要加上域名否则无效报错。

m0_74276368的博客 1698

【奇奇怪怪的问题】pandoc报错

前言 最近在二开一个系统,开发过程中遇到了pandoc的问题,特此记录下 报错情况 No pandoc was found: either install pandoc and add it to your PATH or or call pypandoc.download_pandoc(...) or install pypandoc wheels with included pandoc 解决办法 安装pandoc # 此命令时候ubuntu系统,其他系统自行更改 sudo apt instal

pofesser的博客 5522

Python爬虫实战(基础篇)—14获取【巴黎圣母院新闻网(Notre Dame News)】新闻写入Word(附完整代码)

Python爬虫实战(基础篇)—14获取【巴黎圣母院新闻网(Notre Dame News)】新闻写入Word(附完整代码) 利用lxml+xpath

weixin_42636075的博客 1333

python3中selenium-requests库安装报错

1.selenium-requests 由于BeautifulSoup库不能处理JS代码,这种情况下需要使用selenium库。但selenium库有一个缺点就是不同使用post函数。这种时候就需要使用其他第三方库。比如,selenium-requests。 2.selenium-request的安装 电脑环境:win10 64位。 Python版本:3.6.5 pip install s...

读万卷书 行万里路 3322

Python爬虫实战(基础篇)—13获取《人民网》【最新】【国内】【国际】写入Word(附完整代码)

Python爬虫实战(基础篇)《人民网》【最新】【国内】【国际】写入Word(附完整代码)

weixin_42636075的博客 3408

Python爬虫-某政务网站文档爬取,并将正文内容保存在word

将上述地址进行base64.b64decode转码获取url之后,使用浏览器(笔者这里用的google浏览器)打开之后,直接F12启动开发者工具。首先,假设存在一个mongo数据库,我们将采集的数据存入到mongo,后期通过url是否存在mongo而进行url去重。注意这里的“\”以文件夹进行层级分开,如果不需要层级区分,直接将这个“\”去掉即可。:以某政务网网站为例,采集其正文内容,并将其正文内容以docx格式保存为word。最后,查看Preview的时候,基本可以看到想要的目标数据都在该接口地址里面。

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 3862

python自动化办公之爬取HTML目录样式写入word文档实战(含NO pandoc was found报错解决)

python自动化办公之HTML带格式写入word文档 看见朋友每天重复地从网页里把目录复制粘贴到word里,觉得很不智能。于是想到用Python的自动化办公功能,来解救他!比如,下面这个图就是HTML里的内容,我要把它提取出来写入到word里面,还要带上这本书的标题,给word命名。写好了就可以批量处理!!!是不是很妙o( ̄︶ ̄)o 还好朋友会用一个sitemapX工具,把网页中的目标路径都写入到一个txt文件中。 这个小项目做起来,还是有几个重点需要注意的地方: (1)每次解析30个HTML文件,之

zxxxlh123的博客 1729

Python爬虫实战:高效爬取Word与Excel文档内容的完整指南

本文将深入探讨如何使用Python爬虫技术从Word(.docx)和Excel(.xlsx)文档中提取内容。我们将介绍最新的Python库和技术,包括python-docx、openpyxl、pandas等,并提供完整的代码示例。文章还将涵盖异常处理、性能优化以及实际应用场景,帮助读者掌握文档内容爬取的核心技能。关键词:Python爬虫、Word文档解析、Excel数据处理、文档内容提取、办公自动化在开始编写文档爬虫之前,我们需要配置适当的Python环境并了解相关工具库。

2201_76125261的博客 775

python批量爬虫word_办公自动化67_Python爬取博客的所有文章并存为带目录的word

Python爬取博客的所有文章并存为带目录的word 文档#####import requestsfrom bs4 import BeautifulSoupurl = f'http://blog.sina.com.cn/s/articlelist_5119330124_0_1.html'wb_data = requests.get(url)soup = BeautifulSoup(wb_data...

weixin_39896617的博客 2278

Python办公自动化的18个应用场景

随着Python的普及,办公自动化也越来越火爆。本文简单介绍一下Python在办公自动化中的18个应用场景。

ylmx5201314的博客 3883

SAP财务凭证实战:如何用Coding Block快速添加客户化字段(附ABAP代码)

本文详细介绍了在SAP财务凭证中利用Coding Block技术快速添加客户化字段的完整流程,包括技术架构解析、实战配置步骤(OBC4/OB41)及ABAP增强开发。通过案例演示如何高效扩展字段(如增长曲线类型),实现全流程集成且无需修改数据表,显著提升财务凭证的灵活性和可追溯性。

weixin_29271263的博客 225

办公室小姐姐的福利!用Python批量提取word文档中的表格和图片内容

点上方“菜鸟学Python”,选择“星标” 第491篇原创干货,第一时间送达 最近有许多小伙伴想要一些自动化办公的福利小程序,今天就满足大家的需求。日常的办公过程中,总少不了批量提取wor...

cainiao_python的博客 3608

深入解析AUTOSAR中IIC的MCAL实现与Vector配置实践

本文深入解析AUTOSAR架构中IIC总线的MCAL实现与Vector配置实践,探讨IIC在汽车电子中的特殊定位及Vector的折中方案。通过Channel与Sequence设计模式、Chain特性应用及DaVinci Configurator配置步骤,提供IIC驱动的优化与安全实现方法,助力开发者高效解决车载通信问题。

weixin_29172963的博客 407

视频教程-零基础Python自动化办公(漫画版)-Python

零基础Python自动化办公(漫画版) 现任某大型游戏公司后端工程师,阿里云...

weixin_34874355的博客 2266

IPD的分析工具与模型(十六)CBB公用基础模块管理实现资源共享,缩短开发周期

CBB流程的开发环节,基于CBB规划中所识别和设计的CBB,进行CBB的详细设计(包括参数设计和接口设计),并最终实现CBB的落地开发。作为特殊类型的技术构件,CBB的开发流程,可沿用技术开发中的构件开发流程,具体包括概念、计划、开发和迁移等步骤,具体可参见前文的相关介绍。有了蓝图与架构设计,落地实施是关键攻坚。具体工作内容包括:具体工作内容包括:a. 以相似性、聚类、相对独行性、可组合、可扩展性、可维护性等原则为指导,按照产品的功能特征和业务类型,聚焦零散的功能点,形成功能模块,实现产品功能模块的划分;

corgi2020的博客 2000

Conda安装cuda指定版本遇到的一个大坑,导致pytorch无法使用cuda且nvcc -V显示错误的cuda版本

24年3月份的时候用conda install nvidia/label/cuda-11.x.x::cuda还挺正常的,能直接安装11.x.x版本的cuda,我还安利给同学用。但现在5月份不知道为什么这些命令都只会安装最新的cuda12.4,不知道是我哪里设置有问题还是官网的安装目录里的环境配置换了?我在三台不同的服务器上都尝试了安装不同版本的cuda,但最后安装下来的都是12.4版本。

weixin_43933424的博客 8892

第 7 课:Python 爬虫实战 + 自动化办公全能教程【零基础入门|职场提效|合规实战】

本文介绍了Python爬虫与自动化办公两大核心技能的学习指南。爬虫部分重点讲解合规操作,包括requests+XPath技术栈、数据清洗及反爬技巧,以豆瓣电影数据爬取为例演示全流程。自动化办公部分涵盖Excel报表生成、Word文档批量处理及邮件自动发送三大职场高频场景。文章还提供了爬虫与自动化结合的招聘数据采集-报表生成-邮件推送闭环实战案例,强调技能在提升工作效率和个人项目开发中的价值。最后给出分层练习题目和核心知识点总结,帮助读者系统掌握这两项Python特色技能。全文注重合法合规使用,所有技术仅限学

2503_94434664的博客 1568

H3C IPsec over GRE VPN 实验

配置 IPsec over GRE VPN 来连通两端内网

M建的博客 2461

第39期Datawhale组队学习——基于Python的自动化办公

Datawhale第39期组队学习!

weixin_44259058的博客 781

PCL 法线定向【2025最新版】

几种法线定向方法的PCL代码实现。

点云侠的博客 2804

【NodeRed】node-red-contrib-opcua实现PLC读写

在之前的博文【Node-RED】node-red-contrib-opcua-server模块使用(1)中,我们介绍了用node-red-contrib-opcua-server模块实现OPCUA服务端的,以及二次开发的内容。本节博文中我们采用官方社区自带的node-red-contrib-opcua组件开展对OPCUA客户端的介绍,详细阐述用该组件中OpcUa-Client节点实现客户端对PLC的读写,以及实现过程中遇到的问题。由于官方社区中并没有找到该组件的介绍实例,这也是本博文编写的第1个原因。

weixin_48618536的博客 958

python自动化办公入门书籍-视频教程-零基础Python自动化办公(漫画版)-Python

零基础Python自动化办公(漫画版)现任某大型游戏公司后端工程师,阿里云大学云学院导师,中国人工智能协会高级会员,HackPython工作室负责人,曾出版书籍《深入浅出生成对抗网络:原理剖析与TensorFlow实现》。 廖茂文¥99.00立即订阅订阅后:请点击此处观看视频课程视频教程-零基础Python自动化办公(漫画版)-Python学习有效期:永久观看学习时长:447分钟学习计划:8天难...

weixin_37988176的博客 683

maya导入导出bvh 自动 脚本

maya打开bvh脚本

jacke121的专栏 1550

python可能实现办公自动化吗,让工作化繁为简:用Python实现办公自动化

让工作化繁为简:用Python实现办公自动化作者:李杰臣 编著出版日期:2021年02月文件大小:11.47M支持设备:¥50.00在线试读适用客户端:言商书局iPad/iPhone客户端:下载 Android客户端:下载PC客户端:下载更多详情:查看?对图书下载、阅读卡购买有疑问:立即进入帮助中心>>图书简介目录本书是一本案例驱动型的Python编程指南,将语法知识和编程思路融入大量...

weixin_36462532的博客 966

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 用python60行代码写一个简单的笔趣阁爬虫!三分一章?
下一篇: Python统计微信消费!生成微信消费账单!真强大!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值