2015-10-20 50 views
1

我有很多通過Google地理API獲取的XML文件。我感興趣的標籤的價值LONG_NAME其中標籤包含的價值路線查找XML標記值並選擇包含請求標記值的父項

我可以選擇用下面的代碼將該值:

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 

不幸的是指數(以這個例子中的索引是1)期望的XML標籤有時會改變,所以我不會每次都得到路由標籤。所以我尋找一種策略,首先尋找類型值路線,然後選擇以前的兄弟姐妹。

回答

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