我目前正在使用Python中的Selenium进行网页抓取项目。
当在非无头模式下从Web驱动程序运行代码时,我的代码按预期工作。但是,在无头模式下运行时,则不是这种情况。例如,如果我尝试从网站提取文本,则非无头模式将返回文本,而无头模式将返回无结果(None)。 (我已经包含了下面的一些代码以供参考)。
首先,我使用以下代码构建了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 - Leyla Zwolinskidriver.save_screenshot()
,然后查看图像以确定页面是否已正确加载。 - Hammad