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

【采集全球最新地震分布数据Python之表格数据采集练习】表格数据采集
前提:具备一定的HTML网页中表格知识→HTML表格-学习参考,如果表格中有唯一属性值或唯一字符串,则可以利用find()函数返回指定的属性或指定字符串的表格标签;如果没有,也可通过代码分别输出每个table标签查看所需表格再第几个table标签中 。
例(返回指定网页的所有表格):
html_table = request.urlopen('网址')soup1 = BeautifulSoup(html_table, "lxml")table_list = soup1.find_all("table")i = 0for i in range(len(table_list)):print("table%d" % i)print(table_list[i])
示例:从中国地震台网网页中采集全球最新的地震分别数据

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

文章插图
网页界面(局部)如下:
具体代码:
from urllib import requestfrom bs4 import BeautifulSoupwith 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)
输出结果:
采集全球最新地震分布数据  Python之表格数据采集练习

文章插图
若想将获取的地震数据直接保存到Excel表中,可利用 xlwt包 将数据写入到一个Excel表中→Excel文件读写-学习参考 。代码如下:
from urllib import requestfrom bs4 import BeautifulSoupimport xlwtwith 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后,发现第一条数据更新(○′?д?)?咱云南普洱江城的地震,可见地球发生地震的频率之高啊啊)
勤学勤练,方能实现 (? ?_?)?