era5数据内容说明_关于爬取网站数据保存为docx出现的一些问题

news/2024/5/11 3:50:25/文章来源:https://blog.csdn.net/weixin_39829166/article/details/110648956

最近同事在爬取某网站数据,想将爬取的数据保存为docx。在爬取数据过程中一切很顺利,但是在保存数据时却提示以下错误。

  File "srclxmletree.pyx", line 1024, in lxml.etree._Element.text.__set__  File "srclxmlapihelpers.pxi", line 747, in lxml.etree._setNodeText  File "srclxmlapihelpers.pxi", line 735, in lxml.etree._createTextNode  File "srclxmlapihelpers.pxi", line 1540, in lxml.etree._utf8ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters

数据保存使用的是python-docx模块。大致意思是字符不兼容,所有字符串必须与XML兼容。

那么接下来面向百度或谷歌编程,根据百度搜索结果。大致意思是python-docx与中文字符不兼容,需要将字符转为Unicode。让我们先来看看字符的数据内容,和字符数据格式。

def save(doc_title, doc_content_list):    document = Document()    # 测试标题    heading = document.add_heading(doc_title, 0)    # 居中显示    heading.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER    #打印字符集    print(chardet.detect(doc_content_list.encode()))    #打印数据内容    print(doc_content_list)    # 测试内容,这里转为Unicode    document.add_paragraph(doc_content_list)    # 字符分割,用于保存文件名    t_title = doc_title.split()[0]    # 运行    document.save('下载-%s.docx' % t_title)

运行结果如下所示

9bfd19bc096f2cddde390eb98eccbdab.png

字符集和数据内容

数据内容好像没问题,字符集为utf-8。

难道是python-docx与中文字符真的不兼容?着手写了一个测试如下

from docx.enum.text import WD_PARAGRAPH_ALIGNMENT  # 用来居中显示标题from docx import Documentdocument = Document()#测试标题,注意这里忘了转为Unicodeheading = document.add_heading("测试标题", 0)heading.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 居中显示#测试内容,这里转为Unicodedocument.add_paragraph(u'测试内容')document.save('测试文档.docx')

最后运行一切正常,保存成功。

deef6a1890d583cd29fa4df4e7daf6b6.png

测试结果

在写测试标题的时候忘了将字符转为Unicode,但是也能够正常保存,说明python-docx是能够支持utf-8字符集。而测试内容转为了Unicode,但是在文档中也能正常显示,说明python-docx在保存Unicode的时候会默认转为utf-8。

按理论上了来说,python-docx在保存数据的时候是没有问题的,那为什么会报错呢?那我们将网站上爬取的数据转为Unicode试试。大致代码如下

def save(doc_title, doc_content_list):    document = Document()    # 测试标题    heading = document.add_heading(doc_title, 0)    # 居中显示    heading.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER      # 测试内容,这里转为Unicode    document.add_paragraph(json.dumps(doc_content_list))    # 字符分割,用于保存文件名    t_title = doc_title.split()[0]    # 在当前脚本路径存储docx文件    document.save('下载-%s.docx' % t_title)

使用json.dumps将字符串转为Unicode,加上这一步操作后,运行过程中没有任何异常,但是运行结果却不是我们所想要的。大致运行结果如下图所示

c755e79cb7558195dca44ec038c321d4.png

运行结果

当场我就纳闷了,怎么标题保存没问题,但是内容保存却是Unicode,按理论来说内容应该会直接转为utf-8啊。

懵逼之后,我整理了下思路:

  1. 数据可以打印,说明数据获取没问题
  2. 数据格式为utf-8
  3. python-docx可以直接保存utf-8数据集,也可以保存Unicode格式
  4. python-docx将数据保存为Unicode不报错,但是显示有问题
  5. python-docx将数据直接以utf-8保存,报错

整理思路,说明我们的数据可能有问题。我们回过头来看下错误提示

All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters

所有字符串必须与XML兼容:Unicode或ASCII,不能是空字节或控制字符。

接下来我们尝试将得到的数据清理下,将所有非utf-8的字符去掉。大致代码如下

from docx.enum.text import WD_PARAGRAPH_ALIGNMENTfrom docx import Documentimport re# 清理所有非utf-8的字符def cleantxt(raw):    # utf-8字符集范围u4e00-u9fa5     fil = re.compile(u'[^0-9a-zA-Z一-龥.,,。?“”《》_()!;:]+', re.UNICODE)    return fil.sub(' ', raw)def save(doc_title, doc_content_list):    document = Document()    # 测试标题    heading = document.add_heading(doc_title, 0)    # 居中显示    heading.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER    # 测试内容,清理异常数据    document.add_paragraph(cleantxt(doc_content_list))    # 字符分割,用于保存文件名    t_title = doc_title.split()[0]    # 在当前脚本路径存储docx文件    document.save('下载-%s.docx' % t_title)

运行一切正常,接下来到了激动人心的时刻了。

53bc88dcdddf2e521a24f87914195d30.png

运行结果

终于得到了想要的结果,在此记录遇到问题的场景和解决问题的思路和方法和大家共享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_783618.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭载网站的云服务器需要空间备案,云服务器需要备案么

如果国内用户使用国内大陆免备案云服务器的好处在于,不必受限于网站的备案流程,购买之后,建好网站就可以迅速使用。如果是大陆的主机,还要进行备案的提交,审核等流程。用户们在选择免备案免备案服务器一般以总之&#…

如何将你的网站开发成手机应用?

2019独角兽企业重金招聘Python工程师标准>>> 只需2步: 一、建立网页手机版 一般企业都有PC版本的web页面,有些也有手机版的wap页面,如果有手机版的wap页面那就更好了,做成应用入口,用户的体验会好很多。如果…

刨根问底--技术--jsoup登陆网站

2019独角兽企业重金招聘Python工程师标准>>> 使用jsoup登陆网站,重要的就是看这个网站登录的时候需要什么信息? 步骤: (1) Jsoup.connect(url)创建一个connect对象,注意:这个方法只…

《高性能网站建设指南》阅读体会

今日阅读了《高性能网站建设指南》一书,该书的作者Steve Souders"为Yahoo!的开发团队构建了YSlow"。YSlow是Web页面性能分析工具,可以集成至Firebug,非常好用。书和工具是配套的,工具会在线更新,书印出来就不…

源码下载和购买网站

1.速帮网 http://www.58subang.com/ 2. 免费源码下载站 搜刮好东西 http://www.sogua2008.com/ 3.码云-开源中国代码托管平台 提供开源代码 https://gitee.com/ 4.看源社区 http://www.see-source.com/ 转载于:https://www.cnblogs.com/yangchunlong/p/8195957.html

初中计算机使用在线,初中信息技术考试模拟试题(flash+网站基础知识)

教学设计、复习1flash&网站总分60分 考试时间30分钟题号 一 二 总分 分数得分 评卷人一、单项选择题(共20题,计20分)第1题(1分): 制作个人网站时为了使网页界面整齐、有序,一般使用哪种工具对网页布局() A 、格式刷 B 、表格 C 、标尺 D 、文本框第2…

[置顶] 第一个ASP.NET网站——从静态到动态

【操作步骤】 一、创建简单的静态网页 1、在D盘新建文件夹aaa; 2、在文件夹aaa中新建文本档&#xff0c;输入如下内容&#xff1a; <html> <head> <title>简单的静态网站</title> </head> <body> 你好&#xff0c;今天是2013年4月28日。 &…

黑客对俄罗斯克里姆林宫网站展开攻击

俄罗斯政府周一表示&#xff0c;上周日&#xff0c;黑客对克里姆林宫网站进行“非常严重的”攻击。克里姆林宫发言人迪米特里佩斯科夫(Dmitry Peskov)表示&#xff0c;这一黑客攻击与俄罗斯地方选举有关&#xff0c;而选举委员会网站周日上午遭到了攻击。 他表示&#xff1a;“…

Android实现蝴蝶动画,飞舞的蝴蝶 - Android中的动画详解系列_Linux编程_Linux公社-Linux系统门户网站...

这一篇来使用逐帧动画和补间动画来实现一个小例子&#xff0c;首先我们来看看Android中的补间动画。Android中使用Animation代表抽象的动画类&#xff0c;该类包括下面几个子类&#xff1a;AlphaAnimation:透明改变动画。ScaleAnimation:大小缩放动画。TranslateAnimation:位移…

创建高安全性PHP网站的几个实用要点

2019独角兽企业重金招聘Python工程师标准>>> 大家都知道PHP已经是当前最流行的Web应用编程语言了。但是也与其他脚本语言一样&#xff0c;PHP也有几个很危险的安全漏洞。所以在这篇教学文章中&#xff0c;我们将大致看看几个实用的技巧来让你避免一些常见的PHP安全问…

实战J2EE—开发购物网站(一)

前言本文通过实战全程编写一个购物网站来讲解如何使用J2EE来建立企业级的网络应用&#xff01;本文针对的是像我这样的绝对初学者&#xff0c;如果您是高手就莫要见笑了&#xff01;一&#xff1a;搭建开发平台本文从实战出发&#xff0c;所以关于一些概念性的问题就不…

实战J2EE—开发购物网站(二)

第三步&#xff0c;安装配置jBuilder 7这里我安装的是weblogic版安装jBuilder不要把它装到带有空格的目录里如Prograih Files,或是中文目录中&#xff0c;不然编译时会出错的。安装很简单&#xff0c;不必多言&#xff0c;这里着重讲一下配置小技巧一&#xff1a;大…

实战J2EE—开发购物网站(三)

二&#xff1a;创建数据库小试牛刀oracle 8i(顺便我们练练手)(为了方便&#xff0c;我就将oracle 8i简写8i了)8i和9i确实有些不一样&#xff0c;不过在界面上区别不大&#xff0c;还是以我的oracle 8i为例为大家讲解一下吧&#xff01;既然是实战&#xff0c;首先我们为…

部署社交网站

项目案例&#xff1a;部署社交网站前言&#xff1a;本次项目是搭建一套动态网站服务器平台&#xff0c;在上面运行社交网站&#xff08;例如&#xff1a;人人网&#xff0c;开心网&#xff0c;天涯论坛&#xff09;。相关知识点在前面的课程中都有所涉及&#xff0c;今天的实验…

Python自动化备份系统及网站

随着目前IT迅猛的发展&#xff0c;自动化运维对于Linux运维人员也越来越重要&#xff0c;传统的运维方式靠大量的人力&#xff0c;现在也逐渐转向自动化运维&#xff0c;我们常见的跟自动化有关的软件有哪些呢。今天我们来简单列举一下&#xff1a;kickistart、puppet、cobbler…

SEO从业五年,软文编写经验总结

从事SEO工作五年&#xff0c;对于很多SEO的技术也有一些自己的经验和想法&#xff0c;在这里想和大家交流一下关于SEO中的主要一块——软文编写的经验和总结。一、最关键&#xff1a;蜘蛛喜欢收录并且有排名蜘蛛喜欢的&#xff0c;用户不一定喜欢;用户喜欢的&#xff0c;蜘蛛一…

php远程获取网站的关键字信息(并附:php判断字符串编码)

php远程获取网站的关键字信息&#xff08;并附&#xff1a;php判断字符串编码&#xff09; 很明显&#xff0c;php100是gbk编码的网站。现在获取它的关键字&#xff0c;并无乱码的显示出来&#xff0c;然后好保存到数据库。 123456789101112131415161718192021<meta http-eq…

百度seo排名点击器app_seo如何快速排名百度首页

seo排名首页是多个要素共同作用的结果&#xff0c;达成seo快速排名首页结果同样需要多个优化要素共同作用&#xff0c;一般而言seo不能快速起效。如果仅仅以快速而言&#xff0c;推荐的方法包括但不限于301永久重定向&#xff0c;快照劫持&#xff0c;模拟用户行为以及短时间增…

网站速度与性能优化要抓主要矛盾解决—瓶颈法

本文主要是思维性的总结&#xff0c;是总结优化的方法学,对方面上面的错误进行总结。不会涉及到前端具体的技术&#xff0c;比如对js和css进行压缩、合并&#xff0c;减少http请求,缓存头控制等等。这些那本《高性能建站指南》都有现成的。 基于本人在多家公司分别遇到的网站速…

搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3

搭建简易Web GIS网站&#xff1a;使用GeoServerPostgreSQLPostGISOpenLayers3 1 服务器搭建 使用Tomcat需要先安装Java。从Oracle官方网站下载Java最新版本&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/index.html 安装完成Java后&#xff0…