获取"隐藏"来自使用python的网页的数据

时间:2017-02-12 15:55:18

标签: python selenium firefox

我使用法国水文局的潮汐数据编写了一个Python程序。目前,我在Windows-10下使用Mozilla Firefox打开此站点: http://maree.shom.fr/harbor/BREST/wl/0?date=2016-10-31&utc=standard (选择" Hauteur d' eau heure par heure",并设置港口和日期)。然后我右键单击,从弹出菜单中选择"另存为",选择文本文件选项并获取存在相关表格的文件,例如:

Lundi 31 octobre 2016
00:00   01:00   02:00   03:00   04:00   05:00
1.79m   2.76m   4.09m   5.43m   6.45m   6.87m
06:00   07:00   08:00   09:00   10:00   11:00
6.56m   5.64m   4.42m   3.21m   2.22m   1.61m...

我的Python应用程序使用正则表达式从此文件中提取数据。 我想自动执行此过程(从Python应用程序打开页面并获取相关内容),但我还没有找到如何执行此操作。网页的html源代码(通过在Firefox中右键单击读取)包含潮汐表。我尝试使用selenium,但我得到的是同样无用的html代码。有什么办法,比如说用于模拟Firefox在命令"另存为* .text"被执行了吗?

1 个答案:

答案 0 :(得分:1)

这不会模仿firefox的功能,但如果你愿意,它会在字典中提供数据 我们的想法是在html中找到var result = _.map(_.uniqBy(data, 'company'), function (item) { $('table').append('<tr><td>'+item.company+'</td></tr>'); }); 标记,然后拆分行。然后,时间为<tbody>个标签,高度为<th>个标签 所以有几个循环和拉链 在此示例中,html位于文件中。您也可以在变量中使用它。

<td>

更新:

你在html中看不到表的原因是因为它生成了javascript。所以我们需要像硒这样的东西,就像你们已经尝试过的那样 我不知道该网站的所有者是否喜欢你,所以你可以问他们,或者看看是否有API。
也就是说,这就是你如何抓取javascript生成的内容 我为webdriver安装了PhantomJS。

f = open("html.txt","r").read()

table = f[f.find("<tbody>"):f.find("</tbody>")]

rows = table.split("<tr>")

data = []

for i in range(1,len(rows),2):
    data.extend(zip(rows[i].split("<th>")[1:],rows[i+1].split("<td>")[1:]))

for i in range(0,len(data)):
    x = data[i][0]
    y = data[i][1]
    data[i] = x[:x.find("<")],y[:y.find("<")]

print dict(data)