搜索美丽的汤输出没有HTML标签

时间:2013-02-05 12:59:57

标签: python class sorting beautifulsoup

我正在开发一个项目,需要输入来自实时闪存图表的数据(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的数据。但是,当我尝试访问此网址时,它会自动将文件(包含数据)保存到我的电脑上,因此我无法访问html源代码使用url,我使用了beautifulsoup来导入数据,但我不能使用html标签搜索或操作它,因为它们是未知的。我真正想要的唯一数据是最新的每小时读数 - 大约1300行之一。那条线,我只需要最后一个值。有没有办法可以找到html标签?如果没有,那么提取我需要的数据的最佳方法是什么?

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

1 个答案:

答案 0 :(得分:2)

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

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

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]