我试图找到一个 ID 为:“header-toolbar-screenshot”的元素。如示例屏幕截图所示:
当我执行这个脚本时:
from requests_html import AsyncHTMLSession
asession = AsyncHTMLSession()
url='https://www.tradingview.com/chart/?symbol=BTCUSDT&interval=4H'
async def get_element():
r = await asession.get(url)
script = """
() => {
button = document.querySelector('#header-toolbar-screenshot');
return button
}
"""
button = await r.html.arender(script = script, sleep = 5)
asession.run(get_link)
未找到任何元素。
在浏览器控制台中执行此命令document.querySelector('#header-toolbar-screenshot')
时,结果如下:
如果我尝试使用 r.html.find 函数找到它:
from requests_html import AsyncHTMLSession
asession = AsyncHTMLSession()
url='https://www.tradingview.com/chart/?symbol=BTCUSDT&interval=4H'
async def get_element():
r = await asession.get(url)
await r.html.arender(sleep = 5)
button = r.html.find('#header-toolbar-screenshot')
asession.run(get_link)
我得到一个结果:
[<Element 'div' id='header-toolbar-screenshot' data-role='button' class=('iconButton-pzOKvpP8', 'button-2Vpz_LXc', 'apply-common-tooltip') title='拿一个快照'>]
我需要用 javascript 找到这个元素,因为当找到该元素时我想点击它..
document.querySelector('#header-toolbar-screenshot')`.click()
我知道还有另一个像 selenium 这样的程序,但是 selenium 需要更多资源并且比这种方法慢。