我在使用 Selenium 解析网站的 HTML 时遇到问题。我有父变量(单个消息),以及我试图提取的嵌套类(名称、内容、时间戳)。当我尝试通过 PyCharm 运行程序时出现问题,我收到错误消息说找不到父变量。完成
html = driver.page_source
后。我没有看到该变量以及其他周围的代码。这很奇怪,因为当我检查元素时,我看到父变量一目了然!我还通过从第一行开始直接从浏览器中删除所有 HTML 进行了双重检查,当我搜索时,我也找不到父变量。我不知道它为什么隐藏,也不知道当我解析时它去了哪里。据我所见,有两个!doctype html
,其中嵌套的被缓存生成,另一种理论是它是一个动态网页,其中有一个聊天室等等。代码如下:
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.website.com/chat")
driver.find_element("name", "val[login]").send_keys("[email protected]")
time.sleep(3)
driver.find_element("name", "val[password]").send_keys("Password")
time.sleep(3)
driver.find_element("id", "_submit").send_keys(Keys.ENTER)
time.sleep(3)
driver.get("https://website.com/chat")
time.sleep(60)
messages = driver.find_element(By.CLASS_NAME, "message flex-property msg-box ")
for message in messages:
username = message.find_element(By.CLASS_NAME, "username").text
content = message.find_element(By.CLASS_NAME, "content").text
print(username,content)
我收到以下错误:
No such element exception
Traceback (most recent call last):
line 20, in <module>
messages = driver.find_element(By.CLASS_NAME, "message flex-property msg-box ")
line 740, in find_element
return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
line 346, in execute
self.error_handler.check_response(response)
line 245, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".message flex-property msg-box "}