python 解析xml和html元素定位,解决a标签下有子标签时,获取 a标签的text文本问题

闲的蛋疼处理了个xml.

xml 长这样:

<div class="list all-list">
    <div class="item" data-search="brbrazil" οnclick="selectCountry(this)" cid="2262" pz="+55">
        <a>
            <span class="country_flag BR"></span>Brazil
        </a>
    </div>
    <div class="item" data-search="brbrazil" οnclick="selectCountry(this)" cid="2262" pz="+55">
        <a>
            <span class="country_flag FR"></span>France
        </a>
    </div>
</div>

 

尝试了几个包去获取这个Brazil,不成功的代码都删除了,以下大概凭记忆粘一下步骤,报错需要调一下。

1. xml 的parse。 获取失败,结果为空。

from xml.dom.minidom import parse
dom_tree = parse("./option.xml")
root_node = dom_tree.documentElement
tag_a = root_node.getElementsByTagName('a')
a = tag_a[0]
print(a.firstChild.data)

2.  lxml  解析然后xpath 获取文本属性失败(代码未列出,可参考上面的), 然后又根据text属性定位,发现找到不。
from lxml import etree
text = "(xml文本内容)"
html = etree.HTML(text)
rst = html.xpath('//a')
rst = html.xpath('//a[contains(text(),"France")]')
3. BeautifulSoup 获取成功,这里你会发现,如果span标签中也有文本,会一同提取出来。
from bs4 import BeautifulSoup
f = open("./option.html", "r")  
html = f.read()  
soup = BeautifulSoup(html, 'lxml')
a = soup.find_all("a")
print(a[0].getText())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值