python读取本地html文件表格数据保存为csv格式

编程入门 行业动态 更新时间:2024-10-07 22:19:06

python读取本地html文件表格数据<a href=https://www.elefans.com/category/jswz/34/1756813.html style=保存为csv格式"/>

python读取本地html文件表格数据保存为csv格式

废话不多说,直接入正题,以下是我将要爬取的html文件部分内容:

文件中有10个样本信息的表格数据,爬取每个表格中的miRNA family 和count 列。

1、读取html

import urllib.requesturl = 'file:///D:/***.html' 
html = urllib.request.urlopen(url).read() print(html)  # 打印查看

url是指html的文件地址,你可以直接打开html文件,复制网站粘贴即可,读取的是html源代码信息赋给变量html。

可以看到读取获得的html是一个很长的字符串,这种形式是不方便我们提取关键信息的,因此有必要将其重新解析为html格式。

from bs4 import BeautifulSoupsoup = BeautifulSoup(html, "html.parser")print(soup)

2、提取关键信息

1)查看源代码

打开html文件,右击选择审查元素,点击左上角箭头图标,将光标移到表格内容上。

仔细观察你会发现每个样本的表格信息就保存在table标签中,10个table标签对应10个样本。

每个表格中的每一行又对应着table标签中的tr标签,一行中的每个数据就在tr标签中的td标签下。

2)提取信息

获取所有的table标签节点信息。

tables = soup.find_all('table')print(len(tables)) # 查看标签数量

本例中存在11个table标签,其中第一个并不是我们所需要的,因此后续提取将略过第一个table标签。

for循环获取每个table标签中的样本名称及其表格数据。

for tab in tables[1:]:   # 从第2个table标签开始迭代循环,第一个标签为table[0]# 提取样本名称,样本名称在a标签中sample = tab.find_all('a')[0].get_text()  # 获取a标签文本信息sample_name = sample.split(' ')[1][:-2]   # 从文本中截取名称# 提取表格信息trs = tab.find_all('tr')  # 获取table中的所有tr标签for tr in trs[2:]:  # trs[0:1]不包含所需信息,因此略过miRNA_family = tr.find_all('td')[0].get_text()count = tr.find_all('td')[1].get_text()

现在,我们获取了所有表格的每一行数据,下一步就是保存数据。

3、数据保存

这里,我将每个样本都保存为一个csv文件。

import pandas as pdcontent = [[miRNA_family, count]]
list_name = ['miRNA', 'count']
data = pd.DataFrame(columns=list_name, data=content)
data.to_csv("C:\\Users***\\{}.csv".format(sample_name), mode='a', header=False, encoding='utf-8')

4、完整代码

from bs4 import BeautifulSoup
import urllib.request
import pandas as pdurl = 'file:///D:/***.html'
html = urllib.request.urlopen(url).read()soup = BeautifulSoup(html, "html.parser")tables = soup.find_all('table')for tab in tables[1:]:# 提取样本名称sample = tab.find_all('a')[0].get_text()sample_name = sample.split(' ')[1][:-2]# 提取表格信息trs = tab.find_all('tr')for tr in trs[2:]:miRNA_family = tr.find_all('td')[0].get_text()count = tr.find_all('td')[1].get_text()# 存储信息content = [[miRNA_family, count]]list_name = ['miRNA', 'count']data = pd.DataFrame(columns=list_name, data=content)data.to_csv("C:\\Users\\***\\{}.csv".format(sample_name), mode='a', header=False, encoding='utf-8')

5、重要模块/函数

1)urlopen函数

需要导入urllib.request模块,用于打开html文件,后加read()实现文件的读取。

2)BeautifulSoup模块

BeautifulSoup函数将文本字符串信息解析成html格式,即将原始的食材做出一桌的“佳肴”。find_all函数可以帮你找到你所需要的菜所在的盘子,继续find_all便可从盘子中挑出你想吃的菜,最后再用筷子get_text()夹起放入碗中。

3)pandas模块

Pandas模块是Python用于数据导入及整理的模块,对于数据的处理工作十分有用。这里简单介绍csv文件的保存,***.to_csv()函数中,***表示你要保存的数据变量,函数中第一个参数即保存文件的地址及文件名,mode = 'a'表示追加写入,header=False省略列名,有关to_csv的更多信息可以自行了解。

4)split函数与字符串切片

事实上,sample = tab.find_all('a')[0].get_text()语句获取的内容是:(Sample  ck-12h),而我只想要ck-12h。

先用空格分隔成两个片段:sample_1 = sample.split(' ')

返回一个列表值:['(sample', 'ck-12h)']

获取列表的第二个元素:sample_2 = sample_1[1]

返回一个字符串:ck-12h)

获取除“)"外的其他内容:sample_3 = sample_2[:-2]

返回我们想要的内容:ck-12

合在一起写就是:sample_name = sample.split(' ')[1][:-2]

 

更多推荐

python读取本地html文件表格数据保存为csv格式

本文发布于:2024-03-09 02:12:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1723366.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:保存为   表格   格式   文件   数据

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!