【发布时间】:2019-03-08 21:23:12
【问题描述】:
我有一个使用 Selenium 和 Chromium 在 Ubuntu Linux 16.04 上运行的网络爬虫。所有新的爬虫请求都进入 Apache/WSGI,它为每个请求创建一个新的 python 线程,并使用 pyvirtualdisplay 和 Xvfb 生成 Chromium 进程来加载网站、登录、截屏等。
我将 Chromium 与以下标志一起使用: 禁用扩展、禁用 GPU、无头、无沙盒
caps = DesiredCapabilities().CHROME
caps["pageLoadStrategy"] = "none"
然后我有一个功能可以每秒检查一次页面是否已加载(因为某些页面在合理的时间内没有完全加载,所以我尝试等到它们至少可以交互后再继续):
driver.execute_script("var state = document.readyState; return state;")
奇怪的是,现在当我尝试加载页面时,它立即说它处于“完成”状态(并且在接下来的 15 秒内继续如此)。但是当我实际尝试查找一个元素时,却找不到它——所以我认为它实际上并没有被加载。通常它会说它是“加载”,然后是“交互”等。
我尝试重新启动 Apache,但似乎没有解决任何问题。有什么问题?
我可以在我的进程列表中看到当新请求进来时 Chromium 和 Xvfb 确实在运行:
7429 ? S 0:00 Xvfb -br -nolisten tcp -screen 0 1024x768x24 :2165
7430 ? Sl 0:00 /var/www/html/flaskapp/chromedriver --port=39146
7438 ? Sl 0:00 /usr/lib/chromium-browser/chromium-browser --disable-background-networking --disable-client-side-phishing
7440 ? S 0:00 /usr/lib/chromium-browser/chromium-browser --type=zygote --no-sandbox --enable-logging --headless --log-l
7457 ? Sl 0:00 /usr/lib/chromium-browser/chromium-browser --type=gpu-process --no-sandbox --enable-logging --headless --
7468 ? S 0:00 /usr/sbin/apache2 -k start
7469 ? Sl 0:00 /usr/lib/chromium-browser/chromium-browser --type=renderer --no-sandbox --enable-automation --enable-logg
【问题讨论】:
标签: selenium google-chrome webdriver selenium-chromedriver chromium