有没有一种方法可以使用selenium网络驱动程序从shadowroot读取数据



from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.binary_location = r'C:Program FilesMozilla Firefoxfirefox.exe'
driver = webdriver.Firefox(executable_path=r'C:Users******Downloadsgeckodriver.exe', options=options)
#driver.get('http://google.com/')
url =  "https://www.foxnews.com/sports/nfl-great-frank-gore-says-hall-of-famer-numbers-speak-themselves"
driver.get(url)
item = driver.execute_script("return document.querySelector('div.article-comments').shadowRoot.querySelector('ul.spcv_messages-list')")
print(item.text)
driver.maximize_window()
driver.get(url)

注意:我正在努力搜集福克斯新闻的评论:https://www.foxnews.com/sports/nfl-great-frank-gore-says-hall-of-famer-numbers-speak-themselves.请帮我处理这个

您可以尝试这个脚本。

import time
....
driver.maximize_window()
driver.get(url)
time.sleep(5)
item = driver.execute_script('''
let divs =  document.querySelector('div.article-comments').querySelectorAll('div');
let shadowroot = null;
for (el of divs) {
if (el.hasAttribute('data-spot-im-shadow-host')) {
shadowroot = el.shadowRoot;
}
}
return shadowroot.querySelector('ul.spcv_messages-list');
''')

如果div.article-comments没有shadowRoot属性,则需要选择包含它的特定元素。在这种情况下,div将具有属性data-spot-im-shadow-host

使用get_attribute('textContent')而不是.text,它将在不滚动的情况下检索数据。

相关内容

最新更新