尝试使用python从War Thunder本地主机读取数据

时间:2017-04-21 21:15:50

标签: python html beautifulsoup urllib

基本上我使用python将串行数据发送到arduino,这样我就可以使用游戏中的数据来制作移动拨号。这可以工作,因为您可以使用网址“localhost:8111”在游戏时为您提供这些统计信息的列表。问题是我正在使用urllib和BeautifulSoup,但他们似乎盲目地阅读源代码而不提供我需要的数据。

当我检查该页面的元素时,我需要的数据出现。其他页面似乎暗示使用某些东西在python中运行HTML会解决这个问题,但我发现没办法这样做。这里的任何帮助都将非常感谢。

3 个答案:

答案 0 :(得分:0)

您的问题可能是页面元素动态。 (以JavaScript为例) 为什么这是个问题?答:您无法访问这些标签或数据。您将不得不使用无头/自动浏览器(了解有关硒的更多信息)。

然后通过selenium进行会话并继续按照您想要的方式向Arduino提供数据。

摘要:如果您 检查元素 ,您可以看到该标记,如果您转到查看来源,则无法看到它。使用 bs4 请求 无法解决此问题。你将不得不使用一个名为Selenium的模块或类似的模块。

答案 1 :(得分:0)

不是海报,但我一直在和他一起工作。我们设法让它运作起来。如果其他人有这个问题,这里的代码是让它显示我们的速度

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://localhost:8111")
time.sleep(1)
while True:
    elements = driver.find_element_by_id("stt-IAS, km/h")
    print(elements.text)

不知道为什么需要time.sleep但是如果没有它,代码似乎不起作用。

答案 2 :(得分:0)

Here是一个Python模块,您可以使用它从War Thunder本地服务器页面“指标”和“状态”中获取所有飞行器遥测数据。每个页面的内容都是车辆当前遥测值的静态JSON描述。

Python包使用请求模块来查询本地服务器中的数据,将返回的JSON数据转换为字典,然后将所有数据合并为单个遥测字典。然后,这些数据可用于其他Python进程,例如数据记录或绘图。