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

表格数据采集

前提:具备一定的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])

示例:从中国地震台网网页中采集全球最新的地震分别数据
网页界面(局部)如下:
Python之表格数据采集练习(采集全球最新地震分布数据)_第1张图片
具体代码:

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)

输出结果:
Python之表格数据采集练习(采集全球最新地震分布数据)_第2张图片
若想将获取的地震数据直接保存到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")

Python之表格数据采集练习(采集全球最新地震分布数据)_第3张图片
(PS:重新获取一遍地震台网上的数据写入Excel后,发现第一条数据更新(○´・д・)ノ咱云南普洱江城的地震,可见地球发生地震的频率之高啊啊)


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

你可能感兴趣的:(Python,python,爬虫)