如何从python中已打开的网页中提取css数据

如何从python中已打开的网页中提取css数据,python,html,css,beautifulsoup,Python,Html,Css,Beautifulsoup,有一个使用hmtl画布的游戏,可以在屏幕上动态放置对象。数据存储在div中,并具有存储其位置的关联css id。您可以使用dev工具观察这些数据并检查每个元素。我希望能够在python中获得这些XY位置,但它必须来自已经打开并运行的选项卡(chrome或firefox)。我尝试了beautifulsoup,但似乎每次都会打开一个新标签。我需要当前打开的选项卡中的数据。请注意,数据每隔一段时间就会更新一次。那么,我该怎么做呢 或者可以通过javascript实现,但是,既然该选项卡上已经有一些ja

有一个使用hmtl画布的游戏,可以在屏幕上动态放置对象。数据存储在div中,并具有存储其位置的关联css id。您可以使用dev工具观察这些数据并检查每个元素。我希望能够在python中获得这些XY位置,但它必须来自已经打开并运行的选项卡(chrome或firefox)。我尝试了beautifulsoup,但似乎每次都会打开一个新标签。我需要当前打开的选项卡中的数据。请注意,数据每隔一段时间就会更新一次。那么,我该怎么做呢


或者可以通过javascript实现,但是,既然该选项卡上已经有一些javascript在运行,那么如何实现呢?

阅读您最近的评论后,您应该只需要selenium就可以了。您不需要查找x/y,因为您可以让selenium单击具有特定类的特定div

driver.findElementByClassName(“junk1”)。单击();

然后,如果需要,您可以使用
sleep
for
循环在特定的时间间隔内重复该操作。这里有一些很好的资源:

我找到了一个解决方案或至少是解决方案的一部分。这个项目是为了好玩,但结果比最初预期的要复杂,这只是基本部分

我所做的是: 1) 安装firefox的greasemonkey插件。铬有一个等价物 2) 安装烧瓶

然后我用greasemonkey写了一个脚本。同样,可能不是greates代码,但是,我相信它会在某些地方帮助某些人

// ==UserScript==
// @name     js send data experiment
// @version  1
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @grant       GM.xmlHttpRequest
// ==/UserScript==

let data = [
  {"who":"greasemonkey", "what":"Hi there4"}
 ];

GM.xmlHttpRequest({
    method: "POST",
    url: "http://localhost:5000/worker2",
    data: JSON.stringify(data),
  headers: {
    "Content-Type": "application/x-www-form-urlencoded"
    }
});
我不确定是否需要ajax,但您肯定需要@grant GM.xmlHttpRequest

然后我编写了这个python脚本,在命令行中运行,一切都正常

#!flask/bin/python

import sys

from flask import Flask, render_template, request, redirect, Response
import random, json

app = Flask(__name__)

@app.route('/worker2', methods = ['POST'])
def worker2():
    # read json + reply
    data = request.get_json(force=True)
    print("**************** ")
    print(data)
    print("**************** ")
    return "success!!!"


if __name__ == '__main__':
    # run!
    app.run(debug=True)

请尽量说得更清楚些。你的目标是什么?你想对元素位置做什么?一旦我有了x和y坐标,我就可以让程序自动点击该位置。仅此而已。由于项目动态显示,位置总是在变化。BeautifulSoup绝对不是您需要的。无论如何,这似乎太宽泛/模糊,可能离题。这个怎么样。在网页中有一个id为垃圾邮件的div,请找到该div的x-y位置并使用该位置单击它。单击该div后,将删除该div并创建一个新div。找到它的位置并单击它。等等。selenium可以异步访问我需要的数据吗?