python利用xpath分别获取多个相同标签之间的全部内容

xpath分别获取多个相同标签之间的全部内容,如下:

<h2>标签一</h2>
<p>xxxx</p>
<p>xxxx</p>
<p>xxxx</p>
<p>xxxx</p>
<h2>标签二</h2>
<p>xxx</p>
<p>xxx</p>
<h2>标签三</h2>

例如获取h2标签之间所有的p标签的内容。可以使用

results = con.xpath('//h2')
for result in results:
    content=result.xpath('./following-sibling::*[position()<count(./following-sibling::*) - count(./preceding-sibling::h2)]//text()')

这样就可以循环获取h2标签之间的内容了。完整代码如下

results = con.xpath('//h2')
dit = {}
for result in results:
    d0 = ''.join(result.xpath('.//text()')).strip()
    d1 = result.xpath('./following-sibling::*')

    # print(d1)
    s = [p.tag for p in d1]
    print(s)
    try:
        c = s.index('h2')

        b = result.xpath(f'./following-sibling::*[position()<{c+1}]//text()')
    except Exception:
        b = result.xpath(f'./following-sibling::*//text()')


    dit[d0]=b

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值