selenium获取不了标签文本的解决方法

     今天爬取一些网站,遇到了一些比较难理解的问题,索性一直研究,幸好解决了。发现这方面的东西写的人比较少,于是就写一下,分享心得。

首先,网页的界面如下,显示毫无问题:

     

再看源码:

怎么看,这都是一个正常的标签获取。然而就是获取不到这个值。

maxTi = browser.find_element_by_css_selector('#window > table:nth-child(6) > tbody > tr:nth-child(2) > td:nth-child(2)').text

这个方式每次获取的都是空值。

想过是不是有 iframe 存在的情况。仔细查找代码,并没有!

也尝试过

driver.switchTo().defaultContent()

然而,都没有结果。

最后找到了一个博客:https://www.cnblogs.com/ppppying/p/7755064.html

给出了解决方法。

这个问题的本质是被隐藏了。

 maxIn = browser.find_element_by_css_selector('#window > table:nth-of-type(2) > tbody > tr:nth-child(2) > td:nth-child(3)').get_attribute('innerHTML')#承诺到窗口最多次数说明
    ye_or_no = browser.find_element_by_css_selector('#window > table:nth-of-type(2) > tbody > tr:nth-child(2) > td:nth-child(3)').is_displayed()#承诺到窗口最多次数说明
    test_play = browser.find_element_by_css_selector('#window > table:nth-of-type(2) > tbody > tr:nth-child(2) > td:nth-child(3)').get_attribute('innerHTML')
    print('是否被隐藏--------------------------------',ye_or_no)
    print('显示文本内容--------------------------------',test_play)

ss..is_displayed()查看是否被隐藏。如果返回False,就是这个值被隐藏了。

然后用ss.get_attribute('innerHTML')获得被隐藏的东西。

上述博客还给出了其他的三种解决方法:

print(ss.get_attribute("innerHTML")) # 用innerHTML 会返回元素的内部 HTML, 包含所有的HTML标签。
print(ss.get_attribute('textContent'))  #用textContent 和 innerText 只会得到文本内容,而不会包含 HTML 标签。
print(ss.get_attribute('innerText'))   # innerText 不是 W3C DOM 的指定内容,FireFox不支持

1,2种在selenium使用chrome的时候均能正常使用。

 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值