【问题标题】:Get data of a XML with criteria获取符合条件的 XML 数据
【发布时间】:2020-01-15 19:19:20
【问题描述】:

我有以下代码:

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>]

如果 NmbItem 包含“LIQUIDOS”,我只需要给我带来“QtyItem”在这种情况下是 22

我如何在这个 xml 中使用 python 做到这一点?

【问题讨论】:

标签: python xml url beautifulsoup


【解决方案1】:

你可以使用正则表达式。

import re
from bs4 import BeautifulSoup

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

【讨论】:

    【解决方案2】:

    你可以这样做:

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

    【讨论】:

    • 非常感谢,你能解释一下这部分吗? list(item.next_siblings)[3].text please
    • item.next_siblings 返回与引用标签(在本例中为“NmbItem”)处于同一级别的所有标签。然后我将其转换为列表并获取索引 3 中的项目,即“QtyItem”。 .text 返回标签文本。
    猜你喜欢
    • 2011-04-27
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多