我在一个抓取项目中,当然我正在尝试获取一个页面。
这是我用来打开页面的代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument("user-data-dir=selenium")
print("Opening browser")
driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver", options=chrome_options)
print("getting request")
driver.get("http://www.tsetmc.com/Loader.aspx?ParTree=15131F")
print("starting wait")
time.sleep(10)
response = driver.page_source
print("got response, quitting...")
driver.quit()
我的问题
问题是当它到达时它什么也不做,driver.get()
我的意思是它既不结束进程也不打印"starting wait"
。(问题在我的笔记本电脑和服务器上仍然存在)我尝试删除该--headless
选项,它在我的笔记本电脑(Ubuntu 20.04)上运行良好,但是当我将它上传到我的服务器并在那里运行时(Ubuntu Server 18.04)它镀铬崩溃(下面的异常消息)
消息:未知错误:Chrome 无法启动:异常退出。(未知错误:DevToolsActivePort 文件不存在)(从 chrome 位置 /usr/bin/google-chrome 启动的进程不再运行,因此 ChromeDriver 假设 Chrome 已崩溃。)
所以我得出的结论是我必须使用--headless
选项,因为我的服务器上没有 GUI,并且当它不存在时 chrome 崩溃。
总之,我需要帮助来解决无限等待的问题driver.get()
PS:我可以毫无问题地运行下面的代码,这对我来说很奇怪:
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument("user-data-dir=selenium")
browser = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver', options=chrome_options)
print("open browser")
browser.get("https://www.codal.ir")
print("get")
time.sleep(10)
response = browser.page_source
print("response")
browser.quit()