Python 使用条件获取XML的数据

Python 使用条件获取XML的数据,python,xml,url,beautifulsoup,Python,Xml,Url,Beautifulsoup,我有以下代码: import pandas as pd import urllib.parse from urllib.request import urlopen import requests from bs4 import BeautifulSoup url = 'http://windte2001.acepta.com/v01/E67EBB4910CFDCB067EB7D85FBA6E5511D0E64A9'.replace('/v01/', '/depot/') x = urlop

我有以下代码:

import pandas as pd
import urllib.parse
from urllib.request import urlopen
import requests
from bs4 import BeautifulSoup


url = 'http://windte2001.acepta.com/v01/E67EBB4910CFDCB067EB7D85FBA6E5511D0E64A9'.replace('/v01/', '/depot/')
x = urlopen(url)
new = x.read()
soup = BeautifulSoup(new, "lxml-xml")
result = soup.find_all(['NmbItem','QtyItem'])
这将带来下一个xml结果

<NmbItem>SERV. MANEJO  DE LIQUIDOS</NmbItem>, <QtyItem>22.00</QtyItem>, <NmbItem>SERV. MANEJO DE RESPEL</NmbItem>, <QtyItem>1.00</QtyItem>]
SERV。液化石油气公司,22.00,服务。马内霍·德雷佩尔,1.00]
如果NmbItem包含“LIQUIDOS”,那么我需要的是“QtyItem”,在这种情况下是22

如何使用xml中的python实现这一点?

您可以这样做:

result = soup.find_all(['NmbItem'])
for item in result:
    if 'LIQUIDOS' in item.text:
        print(list(item.next_siblings)[3].text)
您可以这样做:

result = soup.find_all(['NmbItem'])
for item in result:
    if 'LIQUIDOS' in item.text:
        print(list(item.next_siblings)[3].text)

可以使用正则表达式

import re
from bs4 import BeautifulSoup

soup=BeautifulSoup(new,'xml')
result=soup.find('NmbItem',text=re.compile("LIQUIDOS")).find_next('QtyItem').text
print(result)

可以使用正则表达式

import re
from bs4 import BeautifulSoup

soup=BeautifulSoup(new,'xml')
result=soup.find('NmbItem',text=re.compile("LIQUIDOS")).find_next('QtyItem').text
print(result)

url不可访问。你能发布一些xml结构吗?@KunduK该url不可访问。你能发布一些xml结构吗?@KunduK非常感谢你,你能解释一下这部分吗?列表(item.next_sibles)[3]。文本请
item。next_sibles
返回与引用标记(在本例中为“NmbItem”)位于同一级别上的所有标记。然后我将其转换为list,并获取索引3中的项,即“QtyItem”
.text
返回标签文本。非常感谢,你能解释一下这部分吗?列表(item.next_sibles)[3]。文本请
item。next_sibles
返回与引用标记(在本例中为“NmbItem”)位于同一级别上的所有标记。然后我将其转换为list,并获取索引3中的项,即“QtyItem”
.text
返回标记文本。