53-selenium 获取所有子节点下全部内容(selenium的xpath结合etree)

例如,需要获取,1年前项目发起这个文本内容。

首先,我们这个是通过selenium定位标签的,然后需要提取内容,虽然是同样是通过xpath定位的,但是提取文档时,却并不能直接使用xpath中的text()或者string()方法来获取文档,所以现在的思路就是,通过xpath定位到标签,然后通过etree来提取。值得注意的是构建时,需要利用如下函数:(当用driver使用get_attribute时,获取到的是整个column标签下面所有的html,是字符串格式----不对etree对象有用)

driver.find_element_by_class_name('column').get_attribute(
    'innerHTML') 

附上一个片段:

# 项目发起时间:
startTime = browser.find_element_by_xpath('//span[contains(text(),"项目发起")]/parent::div')
content = etree.HTML(startTime.get_attribute('innerHTML')).xpath('string(.)').replace('\n', ',').replace(' ', '')
print(content)
# 如下也可以直接拿取:
print(startTime.get_attribute('outerText'))

附上一个例子:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from lxml import etree

#下面代码主要是让selenium使用无界面的chrome浏览器
chrome_options = Options()    
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=chrome_options)

driver.get(url)
#当用driver使用get_attribute时,获取到的是整个column标签下面所有的html,是字符串格式----不对etree对象有用
column = driver.find_element_by_class_name('column').get_attribute(
    'innerHTML') 
html = etree.HTML(column)   #使用etree变成lxml格式
html.xpath('//li[@class="first_f"]//div[@class="msg"]/a[2]/text()')
# 获取到的值是文本['内容'],列表格式的字符串()

如果要获取标签里面的html,
details = html.xpath('//li[@id="{}"]//div[@class="reply_c"]/p'.format(reply_id))[0]
details = etree.tostring(details, encoding="utf-8", pretty_print=True, method="html") # 获取到的是标签的html,是byte类型
details = details.decode('utf-8') if details else None        # 返回字符串格式

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ystraw_ah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值