【发布时间】:2021-06-01 18:10:13
【问题描述】:
我目前正在做一个在 python 中使用 Selenium 的网页抓取项目。
在非无头模式下从 Web 驱动程序运行时,我的代码按预期工作。但是,当它以无头模式运行时,情况并非如此。例如,如果我尝试从网站中提取文本,非无头模式返回文本,而无头模式返回无。 (我在下面包含了一些代码供参考)。
首先,我使用以下代码构建了 webdriver(opt.headless 设置为 True 或 False,以便在无头和非无头之间切换)
def getHeadlessDriver():
opts = webdriver.ChromeOptions()
opts.headless = False
driver = webdriver.Chrome(ChromeDriverManager().install(), options=opts)
return driver
然后,我使用 find_elements_by_xpath 函数从网站中提取文本数据。下面提供了一个示例代码:
driver = getHeadlessDriver()
feedbacks = driver.find_elements_by_xpath(
"//div[contains(@class, 'LiveFeedbackSectionViewController__LiveFeedbackStatusItem-sc-1ahetk9-4 cUJPkM')]")
for feedback in feedbacks:
print(feedback.text)
我做了一些谷歌搜索以找到无头模式不起作用的解释,但我仍然不确定。据我了解,无头模式“作用相同”,只是没有图形用户界面。
我的代码的实现会不会有问题?或者无头模式除了没有图形用户界面之外还有其他区别吗?
谢谢。
【问题讨论】:
-
getHeadlessDriver后面缺少括号。将其更改为getHeadlessDriver(),它应该可以工作:D -
缺少的括号是错字,抱歉。除了 GUI 之外,headless 和 non-headless 的功能是否相同?
-
有些厚脸皮的网站在无头模式下无法加载整页。调试网站在无头模式下的不同之处,我建议你使用
driver.save_screenshot(),然后查看图像,看看页面是否加载正确。
标签: python selenium selenium-webdriver selenium-chromedriver headless-browser