excel抓取多页网页数据(的是:如何来获取各个文件格式的文本信息(组图))
优采云 发布时间: 2022-04-16 08:43excel抓取多页网页数据(的是:如何来获取各个文件格式的文本信息(组图))
介绍
众所周知,python最强大的地方在于python社区拥有丰富的第三方库和开源特性,让越来越多的技术开发者可以对其进行改进。
python的完美。
未来,人工智能、大数据、区块链的识别和推进方向将以python为中心发展。
哇哇哇哇!好像有点广告的意思。
在当今互联网信息共享的时代,最重要的是什么?数据。什么是最有价值的?是数据。什么最能直观反映科技水平?或者数据。
那么,我们今天要分享的是:如何获取每种文件格式的文本信息。
普通文件的格式一般分为:txt普通文本信息、doc word文档、html网页内容、excel表格数据、特殊mht文件。
一、Python处理html网页信息
HTML类型的文本数据,内容是前端代码写的标签+文本数据的格式,可以直接在chrome浏览器中打开,文本的格式显示清楚。
python获取html文件内容的方法和txt文件一样,直接打开文件读取即可。
读取代码如下:
with open(html_path, "r", encoding="utf-8") as f:
file = f.read()
file 是 html 文件的文本内容。是网页标签的格式内容。
二、Python处理excel表格信息
Python有直接操作excel表格的第三方库xlwt和xlrd。调用对应的方法可以读写excel表格数据。
读取excel操作代码如下:
filepath = "C:\\Users\Administrator\Desktop\新建文件夹\笨笨 前程6份 武汉.xls"
sheet_name = "UserList"
rb = xlrd.open_workbook(filepath)
sheet = rb.sheet_by_name(sheet_name)
# clox_list = [0, 9, 14, 15, 17]
for row in range(1, sheet.nrows):
w = WriteToExcel()
# for clox in clox_list:
name = sheet.cell(row, 0).value
phone = sheet.cell(row, 15).value
address = sheet.cell(row, 9).value
major = sheet.cell(row, 14).value
age = sheet.cell(row, 8).value
其中row为表格数据对应的行数,cell获取具体行数和列数的具体数据。
三、Python读取doc文档数据
Python 是阅读 doc 文档最麻烦的地方。处理逻辑复杂。有很多方法可以处理它。
Python没有直接处理doc文档的第三方库,但是有处理docx的第三方库。将doc文件转换为docx文件,然后调用第三方python库pydocx即可读取doc文档的内容。
这里需要注意的是不要直接修改doc的后缀来修改成docx文件。修改后缀直接得到的docx文件,pydocx无法读取。
我们可以使用另一个库将 doc 修改为 docx。
具体代码如下:
def doSaveAas(self, doc_path):
"""
将doc文档转换为docx文档
:rtype: object
"""
docx_path = doc_path.replace("doc", "docx")
word = wc.Dispatch('Word.Application')
doc = word.Documents.Open(doc_path) # 目标路径下的文件
doc.SaveAs(docx_path, 12, False, "", True, "", False, False, False, False) # 转化后路径下的文件
doc.Close()
word.Quit()
代码所需的封装接口:
import os
import zipfile
from win32com import client as wc
import xlrd
from bs4 import BeautifulSoup
from pydocx import PyDocX
from lxml import html
from xpath_content import XpathContent
from write_to_excel import WriteToExcel
python处理docx文档的方式有很多种。具体用法看个人需要。
No.1 解压docx文件
docx文件的原理本质上是一个压缩的zip文件。解压后可以得到原文件的各种内容。
解压后的docx文件结构如下:
docx文件的文本内容存储结构如下:
文本内容存储在 word/document.xml 文件中。
第一种方法,我们可以先把docx恢复成zip压缩文件,然后解压zip文件,读取word/document.xml文件的内容。
具体操作代码如下:
def get_content(self):
"""
获取docx文档的文本内容
:rtype: object
"""
os.chdir(r"C:\Users\Administrator\Desktop\新建文件夹") # 改变目录到文件的目录
#
os.rename("51 2014.09.12 1份Savannah.docx", "51 2014.09.12 1份Savannah.ZIP") # 重命名为zip文件
f = zipfile.ZipFile('51 2014.09.12 1份Savannah.ZIP', 'r') # 进行解压
xml = f.read("word/document.xml")
wordObj = BeautifulSoup(xml.decode("utf-8"))
# print(wordObj)
texts = wordObj.findAll("w:t")
content = []
for text in texts:
content.append(text.text)
content_str = "".join(content)
return content_str
最后得到的是 docx 文档的所有文本数据。
No.2 将docx文档转换成python可以处理的文本格式
第一种方法是根据docx文档的原理获取数据。过程有点麻烦。有没有办法直接读取docx文档的内容?答案肯定不是,别想了,洗漱回家睡觉。
没有办法直接读取docx文档,有没有办法将docx文档转换成python可以轻松处理的文本格式?
这个可以,前面说了,python有大量丰富的第三方库(请先夸我大python),千辛万苦终于找到了可以转换docx文档格式的第三方库,pydocx,pydocx库pydocx.to_html()中有一个方法可以直接将docx文档转成html文件,怎么样?没有惊喜,没有惊喜!
第二种方法,转换文本格式的代码如下:
def docx_to_html(self, docx_path):
"""
docx文档转换成html响应
:rtype: object
"""
# docx_path = "C:\\Users\Administrator\Desktop\新建文件夹\\51 2014.09.12 1份Savannah.docx"
response = PyDocX.to_html(docx_path)
获得的响应是 html 文件的内容。
四、Python 处理 mht 文件
mht文件是一种只能在IE浏览器上显示的文本格式,在chrome浏览器中打开就是一堆乱码。
No.1 伪造IE请求mht文件内容
读取 mht 文本的最基本方法是伪造 IE 浏览器请求。
调用requests库,发送get请求网页链接,构造IE的请求头信息。
从理论上讲,这种方法是可行的。不过不推荐使用,原因大家都知道。
No.2 转换文件格式
嗯,正经的方法,猜猜mht文件是否可以修改成其他文件格式直接读取?
docx,没有;html,没有;优秀,更不用说。
只有一个真理!!!
直接修改后缀得到的docx无法读取。
那么,我们想到的方法是什么。是的,它被修改成一个doc文档。
这种方法很奇怪,但也很鼓舞人心。
mht可以通过修改后缀直接转换成doc文档。doc文档文本内容的读取方法请参考上面doc文档的读取方法。
如何获取html文本的内容?
html文本的内容是网页结构标签数据,提取文本的方式是:re-regular,或者xpath。
后续如果有需要,会另开一章详细了解re、xapth的规则。