闲的蛋疼处理了个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())