2

我正在做一个项目,该项目需要从实时 Flash 图表中显示的数据输入(位于 的数据记录图表http://137.205.144.34/flash/index.html#menuIndex=1&accordionIndex=2&menuId=mimic1&menuStruct=S1R2M3C1H1。由于无法直接访问 html,我使用 Firebug 监控我的活动,并找到了我想要的数据存储在http://137.205.144.34/services/unload.cmd?format=csvx&sched=&start=-240:00:00&id=75631&step=864. 但是,当我尝试访问这个 url 时,它会自动将一个文件(包含数据)保存到我的电脑,所以我无法访问 html 源代码。使用该 url,我使用 beautifulsoup 导入数据,但我无法使用 html 标签搜索或操作它,因为它们是未知的。我真正想要的唯一数据是最新的每小时读数 - 约 1300 行之一。在那一行中,我只需要最后一个值。有一种我可以找到 html 标签的方法?如果没有,那么提取我需要的数据位的最佳方法是什么?

任何帮助将不胜感激,谢谢。

4

1 回答 1

2

您正在下载的文件中没有 HTML。它是一个逗号分隔的文件,你应该使用csv 模块来解析它。

此代码将打印每行中的第一项(包含日期和时间的项):

import csv

with open('unload.cmd', 'r') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print row[0]

假设您正在使用以默认名称下载的文件,则此方法有效。

为了首先以编程方式下载文件,将其导入字符串,然后将其用作源文件csv.reader()

import urllib
import csv
import StringIO

url = 'http://137.205.144.34/services/unload.cmd?format=csvx&sched=&start=-240:00:00&id=75631&step=864'
f = urllib.urlopen(url)
data = f.read()

reader = csv.reader(StringIO.StringIO(data))
for row in reader:
    if row: print row[0]
于 2013-02-05T13:27:28.150 回答