Python 为什么Selenium在某些站点上找不到元素?
我正在使用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了
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扩展讨论或调试会话;此对话已被删除。请记住使用所有相关信息更新答案。评论不适用于扩展讨论或调试会话;此对话已被删除。请记住使用所有相关信息更新答案。