首页 >> 大全

Python之表格数据采集练习(采集全球最新地震分布数据)

2023-11-02 大全 24 作者:考证青年

表格数据采集

前提:具备一定的HTML网页中表格知识→HTML表格-学习参考,如果表格中有唯一属性值或唯一字符串 ,则可以利用find()函数返回指定的属性或指定字符串的表格标签;如果没有,也可通过代码分别输出每个table标签查看所需表格再第几个table标签中。

例(返回指定网页的所有表格):

html_table = request.urlopen('网址')
soup1 = BeautifulSoup(html_table, "lxml")
table_list = soup1.find_all("table")
i = 0
for i in range(len(table_list)):print("table%d" % i)print(table_list[i])

示例:从中国地震台网网页中采集全球最新的地震分别数据

地震数据采集的动态范围定义__地震采集数据管理

网页界面(局部)如下:

具体代码:

from urllib import request
from bs4 import BeautifulSoup
with request.urlopen("http://www.ceic.ac.cn") as html:soup = BeautifulSoup(html.read(), "lxml")
column = soup.find_all(["th", "td"])  # 返回表格的th和td标签列表
column_list = list(map(lambda x: x.get_text(), column))  # 通过一个自定义的匿名函数利用get_text()方法获取标签中的文本信息
field_number = 6  # 定义一个的变量来表示表格字段数
row_number = int(len(column_list)/field_number)  # 通过计算获取表格总行数
s = ""
for row in range(0, row_number):   # 通过循环提取表格列表中的文本,相加成一个字符串,每一行记录六个字段(值)后加回车,输出for col in range(0, field_number):s = s + " " + column_list[field_number*row + col]s = s + "\n"
print(s)

输出结果:

地震采集数据管理__地震数据采集的动态范围定义

若想将获取的地震数据直接保存到Excel表中,可利用 xlwt包 将数据写入到一个Excel表中→Excel文件读写-学习参考。代码如下:

from urllib import request
from bs4 import BeautifulSoup
import xlwt
with request.urlopen("http://www.ceic.ac.cn") as html:soup = BeautifulSoup(html.read(), "lxml")
column = soup.find_all(["th", "td"]) 
column_list = list(map(lambda x: x.get_text(), column))
field_number = 6 
row_number = int(len(column_list)/field_number)
# 以下为将数据写入Excel表的代码:
table = xlwt.Workbook()
sheet1 = table.add_sheet("earthquake")
for row in range(0, row_number):r = sheet1.row(row)for col in range(0, field_number):w = column_list[field_number*row + col]r.write(col, w)
table.save("D:/tmp/dz.xls")

(PS:重新获取一遍地震台网上的数据写入Excel后,发现第一条数据更新(○´・д・)ノ咱云南普洱江城的地震,可见地球发生地震的频率之高啊啊)

勤学勤练,方能实现 (ง •_•)ง

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了