尝试刮这个网站与 selenium ,不幸的是,文本我想提取的是在影子根dom,像其中2(提供截图https://prnt.sc/ly-T8RLVxr91)属性im试图得到的是“用户-主题-标题”和“用户-主题-行-btm”
这是我代码
def expand_shadow_element(element):
shadow_root = driver.execute_script('return arguments[0].shadowRoot', element)
return shadow_root
driver = webdriver.Chrome(ChromeDriverManager().install())
shadow = Shadow(driver)
z = shadow.chrome_driver.get('https://www.alodokter.com/komunitas/topic/penyebab-dan-cara-mengatasi-sakit-di-bawah-pusar')
html = driver.page_source
soup = BeautifulSoup(html, "html.parser")
top = driver.find_element(By.ID, 'topic-top')
topbt = expand_shadow_element(top)
btom = topbt.find_element(By.CSS_SELECTOR, 'user-topic-top')
for t in btom:
print(t.text)
我得到的错误
'NoneType' object has no attribute 'find_element'
那么我如何访问影子根dom并提取文本呢?我希望得到这些文本https://prnt.sc/yp5H_KteB8tm
我很抱歉,如果我的问题太长,我有点新的编程。任何帮助将不胜感激。
1条答案
按热度按时间cgyqldqp1#
这里的
topic-top
元素不是shadow-root元素。这就是为什么在它上面应用expand_shadow_element
方法什么也不返回的原因。所以topbt
变成了一个'NoneType'对象。