我使用法国水文局的潮汐数据编写了一个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"被执行了吗?
答案 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)