当前位置: 首页 > news >正文

孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8

孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8

 

(完整学习过程屏幕记录视频地址在文末)

 

今天在上一天的基础上继续完成对我的第一个代码程序的书写。

到今天止基本完成了对docx模块针对word文档的段落对象的操作的学习,并通过函数封装,使得可以轻松一点直接向word文档中添加一个或多个段落文本并且设置段落的格式。

由于学习时间有限,今天的函数没有完全完成。

 

一、修改了之前自定义的批量添加word文档段落的函数

```

def addPToDocx(f,strp,strfont='宋体',fontsize=14,fontcolor=RGBColor(0,0,0),stralign='左对齐',strlinespacingstyle='固定值',intlinespace=20,intlinespacebefore=0,intlinespaceafter=0,intfirstlineindent=100000,isShowMsg=False):

    try:

        lst=strp.split('\n')

        for i in lst:

            i.strip()

            try:

                stralign=stralign.lower()

                strlinespacingstyle=strlinespacingstyle.upper()

                strfont.decode('utf-8')

            except:

                pass

            #---先指定样式------------------------

            styles = f.styles

            s=styles['Normal']

            s.font.name=strfont

            s.font.size=Pt(fontsize)

            s.font.color.rgb=fontcolor

            s._element.rPr.rFonts.set(qn('w:eastAsia'), strfont)

            #----选择正确的行距模式------------------------

            if strlinespacingstyle in '固定值,EXACTLY,固定行距,固定行间距':

                s.paragraph_format.line_spacing_rule=WD_LINE_SPACING.EXACTLY #段落行距样式为固定值,必须指定行距值,否则就会变成 多倍行距 模式

            elif strlinespacingstyle in '多行行距,多倍行距,多行距,MULTIPLE':

                s.paragraph_format.line_spacing_rule=WD_LINE_SPACING.MULTIPLE #多倍行距,此模式的具体行间距由文字字号大小决定,如果后面指定了行距值,此多倍行距设置会被忽略,变成固定值模式

            elif strlinespacingstyle in '单行行距,单倍行距,单行距,SINGLE':

                s.paragraph_format.line_spacing_rule=WD_LINE_SPACING.SINGLE #段落行距样式为单倍行距 模式

            elif strlinespacingstyle in '1.5行距,1.5倍行距,一行半行距,一行半倍行距,一点五行距,一点五倍行距,ONE_POINT_FIVE':

                s.paragraph_format.line_spacing_rule=WD_LINE_SPACING.ONE_POINT_FIVE #段落行距样式为 1.5倍行距 模式

            elif strlinespacingstyle in '双行行距,双倍行距,双行距,两行行距,两倍行距,两行距,二行行距,二倍行距,二行距,DOUBLE':

                s.paragraph_format.line_spacing_rule=WD_LINE_SPACING.DOUBLE #段落行距样式为 双倍行距 模式

            else:

                s.paragraph_format.line_spacing_rule=WD_LINE_SPACING.AT_LEAST #段落行距样式为 最小行距 模式

 

            s.paragraph_format.line_spacing=Pt(intlinespace) #行距值

            s.paragraph_format.space_before=Pt(intlinespacebefore) #段前距

            s.paragraph_format.space_after=Pt(intlinespaceafter) #段后距

 

            if intfirstlineindent==100000:

                #--这个形参的默认值表示,首行自动缩进两个字符宽度

                s.paragraph_format.first_line_indent=s.font.size * 2 #段落首行缩进量

            else:

                s.paragraph_format.first_line_indent=Pt(intfirstlineindent) #这时直接使用设置值

            #-------------------------------

            p=f.add_paragraph(i)

            #---接下来可调整对齐方式----

 

            p.alignment=WD_ALIGN_PARAGRAPH.CENTER

 

        return True

    except Exception as e:

        mwordErrString='尝试将来自网页的内容写入word文档正文时出错:' + str(e) + '\n此函数由【孤荷凌寒】创建,QQ578652607'

        if isShowMsg==True:

           msgbox(mwordErrString)

        return False

    else:

        pass

    finally:

        pass

```

 

二、自定义文件【_mword.py】至此的文件内容如下:

 

 

```

def addPToDocx(f,strp,strfont='宋体',fontsize=14,fontcolor=RGBColor(0,0,0),stralign='左对齐',strlinespacingstyle='固定值',intlinespace=20,intlinespacebefore=0,intlinespaceafter=0,intfirstlineindent=100000,isShowMsg=False):

    try:

        lst=strp.split('\n')

        for i in lst:

            i.strip()

            try:

                stralign=stralign.lower()

                strlinespacingstyle=strlinespacingstyle.upper()

                strfont.decode('utf-8')

            except:

                pass

            #---先指定样式------------------------

            styles = f.styles

            s=styles['Normal']

            s.font.name=strfont

            s.font.size=Pt(fontsize)

            s.font.color.rgb=fontcolor

            s._element.rPr.rFonts.set(qn('w:eastAsia'), strfont)

            #----选择正确的行距模式------------------------

            if strlinespacingstyle in '固定值,EXACTLY,固定行距,固定行间距':

                s.paragraph_format.line_spacing_rule=WD_LINE_SPACING.EXACTLY #段落行距样式为固定值,必须指定行距值,否则就会变成 多倍行距 模式

            elif strlinespacingstyle in '多行行距,多倍行距,多行距,MULTIPLE':

                s.paragraph_format.line_spacing_rule=WD_LINE_SPACING.MULTIPLE #多倍行距,此模式的具体行间距由文字字号大小决定,如果后面指定了行距值,此多倍行距设置会被忽略,变成固定值模式

            elif strlinespacingstyle in '单行行距,单倍行距,单行距,SINGLE':

                s.paragraph_format.line_spacing_rule=WD_LINE_SPACING.SINGLE #段落行距样式为单倍行距 模式

            elif strlinespacingstyle in '1.5行距,1.5倍行距,一行半行距,一行半倍行距,一点五行距,一点五倍行距,ONE_POINT_FIVE':

                s.paragraph_format.line_spacing_rule=WD_LINE_SPACING.ONE_POINT_FIVE #段落行距样式为 1.5倍行距 模式

            elif strlinespacingstyle in '双行行距,双倍行距,双行距,两行行距,两倍行距,两行距,二行行距,二倍行距,二行距,DOUBLE':

                s.paragraph_format.line_spacing_rule=WD_LINE_SPACING.DOUBLE #段落行距样式为 双倍行距 模式

            else:

                s.paragraph_format.line_spacing_rule=WD_LINE_SPACING.AT_LEAST #段落行距样式为 最小行距 模式

 

            s.paragraph_format.line_spacing=Pt(intlinespace) #行距值

            s.paragraph_format.space_before=Pt(intlinespacebefore) #段前距

            s.paragraph_format.space_after=Pt(intlinespaceafter) #段后距

 

            if intfirstlineindent==100000:

                #--这个形参的默认值表示,首行自动缩进两个字符宽度

                s.paragraph_format.first_line_indent=s.font.size * 2 #段落首行缩进量

            else:

                s.paragraph_format.first_line_indent=Pt(intfirstlineindent) #这时直接使用设置值

            #-------------------------------

            p=f.add_paragraph(i)

            #---接下来可调整对齐方式----

 

            p.alignment=WD_ALIGN_PARAGRAPH.CENTER

 

        return True

    except Exception as e:

        mwordErrString='尝试将来自网页的内容写入word文档正文时出错:' + str(e) + '\n此函数由【孤荷凌寒】创建,QQ578652607'

        if isShowMsg==True:

           msgbox(mwordErrString)

        return False

    else:

        pass

    finally:

        pass

 

 

```

 

自定义函数没有最终完成,因此今天并没有进行测试,所以也许代码中还有未知错误。

企盼高手能够不吝赐教,万分感激!

 

 

——————————

今天整理的学习笔记完成,最后例行说明下我的自学思路:

根据过去多年我自学各种编程语言的经历,认为只有真正体验式,解决实际问题式的学习才会有真正的效果,即让学习实际发生。在2004年的时候我开始在一个乡村小学自学电脑 并学习vb6编程语言,没有学习同伴,也没有高师在上,甚至电脑都是孤岛(乡村那时还没有网络),有的只是一本旧书,在痛苦的自学摸索中,我找到适应自己零基础的学习方法:首先是每读书的一小节就作相应的手写笔记,第二步就是上机测试每一个笔记内容是否实现,其中会发现书中讲的其实有出入或错误,第三步就是在上机测试之后,将笔记改为电子版,形成最终的修订好的正确无误的学习笔记 。

通过反复尝试错误,在那个没有分享与交流的黑暗时期我摸黑学会了VB6,尔后接触了其它语言,也曾听过付费视频课程,结果发现也许自己学历果然太低,就算是零基础的入门课程,其实也难以跟上进度,讲师的教学多数出现对初学者的实际情况并不了解的情况,况且学习者的个体也存在差异呢?当然更可怕的是收费课程的价格往往是自己难以承受的。

于是我的所有编程学习都改为了自学,继续自己的三步学习笔记法的学习之路。

当然自学的最大问题是会走那么多的弯路,没有导师直接输入式的教学来得直接,好在网络给我们带来无限搜索的机会,大家在网络上的学习日志带给我们共享交流的机会,而QQ群等交流平台、网络社区的成立,我们可以一起自学,互相批评交流,也可以获得更有效,更自主的自学成果。

于是我以人生已过半的年龄,决定继续我的编程自学之路,开始学习python,只希望与大家共同交流,一个人的独行是可怕的,只有一群人的共同前进才是有希望的。

诚挚期待您的交流分享批评指点!欢迎联系我加入从零开始的自学联盟。

这个时代互联网成为了一种基础设施的存在,于是本来在孤独学习之路上的我们变得不再孤独,因为网络就是一个新的客厅,我们时刻都可以进行沙龙活动。

非常乐意能与大家一起交流自己自学心得和发现,更希望大家能够对我学习过程中的错误给予指点——是的,这样我就能有许多免费的高师了——这也是分享时代,社区时代带来的好福利,我相信大家会的,是吧!

 

根据完全共享的精神,开源互助的理念,我的个人自学录制过程是全部按4K高清视频录制的,从手写笔记到验证手写笔记的上机操作过程全程录制,但因为4K高清文件太大均超过5G以上,所以无法上传至网络,如有需要可联系我QQ578652607对传,乐意分享。上传分享到百度网盘的只是压缩后的720P的视频。

 

我的学习过程录像百度盘地址分享如下:(清晰度:1280x720)

链接:https://pan.baidu.com/s/1LmZfGccewkDmBEbCurQM6w

提取码:xu2t

 

Bilibili:

https://www.bilibili.com/video/av40972157/

 

喜马拉雅语音笔记:

https://www.ximalaya.com/keji/19103006/155125300

转载于:https://www.cnblogs.com/lhghroom/p/10316995.html

相关文章:

  • java 多线程
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • Matplotlib中plt.rcParams用法(设置图像细节)
  • 14-tail-and-head-commands-linuxunix
  • Apollo的Oracle适配改动
  • 甄姬
  • Sql 排序
  • contest3 CF994 div2 ooxxx? oooox? ooooo?
  • 梯度下降算法对比(批量下降/随机下降/mini-batch)
  • Angular CLI的简单使用(2)
  • 最大团优化
  • 02-jQuery的选择器
  • Aria2 使用手札(简易部署 + 快速进阶)
  • 『The Captain 最短路建图优化』
  • 各种编码格式转换
  • (三)从jvm层面了解线程的启动和停止
  • 「面试题」如何实现一个圣杯布局?
  • k个最大的数及变种小结
  • Making An Indicator With Pure CSS
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • uva 10370 Above Average
  • windows下使用nginx调试简介
  • 闭包,sync使用细节
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 线性表及其算法(java实现)
  • 学习Vue.js的五个小例子
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #etcd#安装时出错
  • #控制台大学课堂点名问题_课堂随机点名
  • #每日一题合集#牛客JZ23-JZ33
  • $.proxy和$.extend
  • (2020)Java后端开发----(面试题和笔试题)
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Python) SOAP Web Service (HTTP POST)
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (论文阅读40-45)图像描述1
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net IOC框架入门之一 Unity
  • .NET 表达式计算:Expression Evaluator
  • .NET框架设计—常被忽视的C#设计技巧
  • @Not - Empty-Null-Blank
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [Android]常见的数据传递方式
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [C#]扩展方法