Python 为什么Selenium在某些站点上找不到元素?

Python 为什么Selenium在某些站点上找不到元素?,python,selenium,Python,Selenium,我正在使用python版本的Selenium在一个中国网站上捕获评论 该网站是 我想找到这个跨度元素。这在中文里叫做“弹幕列表". 我尝试了绝对路径,如: driver.find_elements_by_xpath('/body/demand-video-app/main/div[2]/demand-video-helper//div/div[1]/a[3]/span') 但是它返回NoSuchElementException。我只是想这个网站可能有一个保护机制。但是,我对Selenium了

我正在使用python版本的Selenium在一个中国网站上捕获评论

该网站是

我想找到这个跨度元素。这在中文里叫做“弹幕列表".

我尝试了绝对路径,如:

driver.find_elements_by_xpath('/body/demand-video-app/main/div[2]/demand-video-helper//div/div[1]/a[3]/span')

但是它返回NoSuchElementException。我只是想这个网站可能有一个保护机制。但是,我对Selenium了解不多,想寻求帮助。提前谢谢。

我想你使用
Selenium
是因为
请求
无法捕获值

如果这不是你想做的,不要读我的答案

因为您是
requests.get(url=)https://v.douyu.com/show/kDe0W2q5bB2MA4Bz)

您需要在
F12网络
上找到数据源
ApiUrl

事实上,他的信息来源是

https://v.douyu.com/wgapi/vod/center/getBarrageListByPage
+
参数

虽然我不能帮你解决硒的问题

但是我将使用以下方法来获取数据

导入请求
url='1〕https://v.douyu.com/wgapi/vod/center/getBarrageListByPage?vid=kDe0W2q5bB2MA4Bz&forward=0&offset=-1'
headers={'user-agent':'Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/86.0.4240.111 Safari/537.36'}
res=requests.get(url=url,headers=headers).json()
打印(res)
对于在res['data']['list']中的i:
印刷品(一)
获取所有数据

import requests

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}
url = 'https://v.douyu.com/wgapi/vod/center/getBarrageListByPage?vid=kDe0W2q5bB2MA4Bz&forward=0&offset=-1'
while True:
    res = requests.get(url=url, headers=headers).json()
    next_json = res['data']['pre']
    if next_json == -1:
        break
    for i in res['data']['list']:
        print(i)
    url = f'https://v.douyu.com/wgapi/vod/center/getBarrageListByPage?vid=kDe0W2q5bB2MA4Bz&forward=0&offset={next_json}'

我猜您使用
Selenium
是因为
请求
无法捕获值

如果这不是你想做的,不要读我的答案

因为您是
requests.get(url=)https://v.douyu.com/show/kDe0W2q5bB2MA4Bz)

您需要在
F12网络
上找到数据源
ApiUrl

事实上,他的信息来源是

https://v.douyu.com/wgapi/vod/center/getBarrageListByPage
+
参数

虽然我不能帮你解决硒的问题

但是我将使用以下方法来获取数据

导入请求
url='1〕https://v.douyu.com/wgapi/vod/center/getBarrageListByPage?vid=kDe0W2q5bB2MA4Bz&forward=0&offset=-1'
headers={'user-agent':'Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/86.0.4240.111 Safari/537.36'}
res=requests.get(url=url,headers=headers).json()
打印(res)
对于在res['data']['list']中的i:
印刷品(一)
获取所有数据

import requests

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}
url = 'https://v.douyu.com/wgapi/vod/center/getBarrageListByPage?vid=kDe0W2q5bB2MA4Bz&forward=0&offset=-1'
while True:
    res = requests.get(url=url, headers=headers).json()
    next_json = res['data']['pre']
    if next_json == -1:
        break
    for i in res['data']['list']:
        print(i)
    url = f'https://v.douyu.com/wgapi/vod/center/getBarrageListByPage?vid=kDe0W2q5bB2MA4Bz&forward=0&offset={next_json}'

为了确保此元素不在iframe中。而且可能该元素暂时还没有渲染出来。您应该通过
sleep
#等待片刻。阴影根具有某些属性。存在阴影DOM。这就是您无法获取它的原因。我更新了答案以一次获取所有信息。请自行对数据进行排序。以确保e、 此元素不在iframe中。而且可能该元素暂时还没有渲染出来。您应该通过
sleep
#稍等片刻。阴影根具有某些属性。存在阴影DOM。这就是您无法获取它的原因。我更新了答案以一次获取所有信息。请自行对数据进行排序。注释不适用于e扩展讨论或调试会话;此对话已被删除。请记住使用所有相关信息更新答案。评论不适用于扩展讨论或调试会话;此对话已被删除。请记住使用所有相关信息更新答案。