gpt4 book ai didi

python - 使用python从网页获取 "hidden"数据

转载 作者:太空宇宙 更新时间:2023-11-03 15:40:24 24 4
gpt4 key购买 nike

我使用法国水文办公室的潮汐数据编写了一个 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代码。有什么办法吗,例如用于模拟执行“另存为 *.text”命令时 Firefox 的操作?

最佳答案

这并不模仿 Firefox 的做法,但如果您愿意,它会为您提供字典中的数据。
这个想法是找到 <tbody> html 中的标记,然后拆分行。那么时间是<th>标签和高度是 <td>标签。
所以几个循环和 zip 就可以了。
在此示例中,html 位于文件中。您也可以将其放在变量中。

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)

更新:

您在 html 中看不到该表的原因是因为它是由 javascript 生成的。所以我们需要像 Selenium 这样的东西,正如你已经尝试过的那样。
不知道那个网站的站长是否愿意你去扒,你可以问问他们,或者看看有没有API。
也就是说,这就是您如何抓取 javascript 生成的内容。
我为网络驱动程序安装了 PhantomJS。

from selenium import webdriver
import time

driver = webdriver.PhantomJS(executable_path="/usr/bin/phantomjs")
driver.get(website_link)
time.sleep(10) # wait as long as it takes for the data to be loaded
print(driver.find_element_by_tag_name("table").text)
driver.close()

关于python - 使用python从网页获取 "hidden"数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42189781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com