如何在python中获取HTML元素坐标

如何在python中获取HTML元素坐标,python,beautifulsoup,python-requests,Python,Beautifulsoup,Python Requests,我想知道是否有一种方法可以在不打开浏览器页面的情况下获取HTML页面中HTML元素的坐标。 我使用的是python,我看到你可以拉一些请求来获取HTML页面,然后,你可以使用诸如bs4之类的模块在里面搜索,但是我没有找到获取元素坐标的方法,这可能吗?(对于元素坐标,我指的是当浏览器加载页面时元素的x pos和y pos) 假设我想得到 我写了这个 导入请求 从bs4导入BeautifulSoup 数据=请求。获取(“https://www.nike.com") soup=BeautifulSou

我想知道是否有一种方法可以在不打开浏览器页面的情况下获取HTML页面中HTML元素的坐标。 我使用的是python,我看到你可以拉一些请求来获取HTML页面,然后,你可以使用诸如
bs4
之类的模块在里面搜索,但是我没有找到获取元素坐标的方法,这可能吗?(对于元素坐标,我指的是当浏览器加载页面时元素的
x pos
y pos

假设我想得到 我写了这个

导入请求
从bs4导入BeautifulSoup
数据=请求。获取(“https://www.nike.com")
soup=BeautifulSoup(data.text'html.parser')
element=soup.find('p',{'class':“vVtA7wL6标题sm基本文本颜色原色暗“})
print(element.coords)#存在/我能否以某种方式创建一个返回coords的模块?

当元素显示在浏览器中时,是否有方法查找
元素。坐标?

通常不可能,因为坐标取决于给定的浏览器渲染它的准确程度

但您可以在python中打开一些浏览器,运行javascript检索坐标并将其返回给python。我们将使用pywebview作为浏览器(需要
pip3安装pywebview

打开浏览器窗口,使用JavaScript检查HTML元素,返回值,然后关闭浏览器窗口。注意:值将取决于窗口大小

import webview
from threading import Thread


def thread_fun():
  while webview.evaluate_js('document.readyState') != "complete":
    # wait for page to load
    time.sleep(0.5)

  # ask for a bounding rect
  bounding_rect = webview.evaluate_js('''
    document.querySelector("img.central-featured-logo").getBoundingClientRect()
  ''');  
  webview.destroy_window()

  print(bounding_rect)


thread = Thread(target=thread_fun)
thread.start()

webview.create_window(title="a title", url="http://wikipedia.org", width=500, height=700)

thread.join()
结果:
{x':150,'y':176,'width':200,'height':183,'top':176,'right':350,'bottom':359,'left':150}

必须在主线程中调用
webview.create\u window
,它将阻止它,直到销毁该窗口


有关webview软件包的详细信息,请参见

预期结果是什么?你想归档什么?我想获取元素坐标,以便能够单击它或截图它,我想能够在不使用seleniumIt的情况下与它进行交互,这不可能完全从html完成。十、 Y坐标在很大程度上取决于设备的屏幕分辨率。@Mat.C您是否试图在不使用selenium的情况下拍摄页面的屏幕截图?不,我正在尝试在不使用selenium的情况下与broswer完全交互