python - 为什么我运行 Selenium 的代码可以在 repl.it 上正确运行,但不能在我的 Ubuntu VM 上运行?
问题描述
我有一个简单的代码,它使用 Selenium 下载动态呈现的网页。
from selenium import webdriver
Chrome_options = webdriver.ChromeOptions()
Chrome_options.add_argument('--no-sandbox')
Chrome_options.add_argument('--headless')
Chrome_options.add_argument('--disable-gpu')
Browser = webdriver.Chrome(options=Chrome_options)
Browser.get('https://example.com/hello')
Data = Browser.page_source
with open("webpage.html","w") as fout:
fout.write(Data)
这可以在 repl.it 上正确运行,即它会下载动态呈现的内容,例如浏览器上的“另存为”。
但是,当我在我的 Ubuntu 20.04 VM 中运行相同的代码时,我只得到静态 HTML 页面,就好像我正在运行wget
或“查看页面源代码”一样。
我在 repl.it 和 VM 上都使用 Python 3.8 和 Selenium 3.141.0,我的 VM 正在运行 Chrome 和 ChromeDriver 92.0.4515。
为什么相同的代码不能在我的 VM 上正确运行?
ETA:我注意到 repl.it 需要更长的时间才能完成Browser.get
,而我的 VM 完成得非常快。可能是由于某种原因,我的虚拟机没有等待所有内容完成加载吗?
解决方案
刚刚意识到我需要给页面一些时间来加载。似乎 repl.it 等待页面完成加载,但我需要time.sleep(10)
在 VM 上的脚本中包含一个,以便页面完成加载。
推荐阅读
- linux - 如何根据列比较 unix 中的两个文件
- r - 在存储在多列上的数据框中查找值
- pytorch - PyTorch get_device_capability() 输出说明
- postman - 无法通过无头 api 在撇号中发布文章
- google-apps-script - Google 工作表错误:访问带有 id 的文档时服务电子表格超时
- swift - 集合视图中单元格的宽度不正确
- oracle - 无法使用 Oracle PL/SQL 访问 Web 服务
- javascript - 查找文本并在单选按钮单击时替换它
- c - libcurl 会话和可选的连接重用
- autofac - Autofac RegisterAssemblyTypes 尝试解析所有公共类型