我通过Google Geo API获得了很多XML文件。我对 long_name 标记的价值感兴趣,其中类型标记包含值 route
我可以使用以下代码选择此值:
from bs4 import BeautifulSoup as bs
xml_data = '''
<result>
<formatted_address>Pariser Platz, 10117 Berlin, Deutschland</formatted_address>
<address_component>
<long_name>Pariser Platz</long_name>
<type>route</type>
</address_component>
<address_component>
<long_name>Mitte</long_name>
<type>sublocality_level_1</type>
</address_component>
</result>
'''
bsObj = bs(xml_data, 'html.parser')
bsObj.find_all('long_name')[1].string
不幸的是,所需XML标记的索引(在此示例中索引为1)有时会发生变化,因此每次都不会获取路径标记。所以我正在寻找一种策略,首先寻找类型值路由,然后选择以前的兄弟。
答案 0 :(得分:1)
要选择文本等于long_name
的第一个type
代码的上一个route
兄弟,请使用:
long_name_tag = bsObj.find('type', text='route').findPreviousSibling('long_name')
或者,要从相关的long_name
标记返回文本字符串,请使用:
long_name_tag_text = bsObj.find('type', text='route').findPreviousSibling('long_name').text