var = driver.execute_script("setTimeout(function(){ return [1,2,3]; }, 1000);")
使用Selenium
execute_script
功能,我想获得数据的网站使用javascript
python
变量并将其传递给var
,问题在于javascript
收集数据的代码需要大约1秒完成收集数据(因为一些动画),所以当执行上面的代码行,当时正确的值是None
(因为javascript
代码没有回复任何东西),但是,1秒后正确的值将被更改为所需的数据,var
仍然是None
,因为这是赋给它的值。
请注意,这行代码运行良好,但这并不是真正需要的。
var = driver.execute_script("return [1,2,3];")
我有解决问题的办法,但我正在寻找更好的办法:
- 让javascript代码将数据下载到一个文件中,在python代码的
time.sleep
之后,让var从该文件中获取数据 - 与1类似,让javascript代码将数据推送到网站的某个地方,在python代码的
time.sleep
之后,让var从网站获取数据。 - 只是使用原始的
Selenium
代码,我不喜欢,因为我不知道Selenium
的基础知识
有一个python库asyncio可以让你在python中使用async await。
import asyncio
import request
async def do_task():
response = await request("https://example.com")
return response.text
正如你在上面看到的,我们可以使用await来告诉python在继续之前等待这个值。