簡體   English   中英

如何解析Python中的XML URL並循環遍歷每一項?

[英]How to parse a XML URL in Python and loop through each item?

我有一個 XML URL,我試圖在 Python 中閱讀它。XML 包含大約 50-60K 產品的大型數據集。

XML中的兩個產品示例:

<?xml version='1.0' encoding='utf-8'?>
<channel>
    <title>
        Google Shopping NL
    </title>
    <description>
        Google Shopping NL
    </description>
    <pubDate>
        Tue, 10 Jan 2023 09:30:35 -0000
    </pubDate>
    <item>
        <ecomm_prodid>123456</ecomm_prodid>
        <g:gtin>8714567834276</g:gtin>
        <g:price>17.95 EUR</g:price>
        <title>Unique Living Teddy plaid - Bruin - 200x150cm</title>
    </item>
    <item>
        <ecomm_prodid>56789</ecomm_prodid>
        <g:gtin>871987731105</g:gtin>
        <g:price>29.90 EUR</g:price>
        <title>Tristar OV-1431 oven 35x25 - 800W - 230V</title>
    </item>

我想讀取 XML 並循環遍歷每個“項目”以檢查該項目是否包含某個“ecomm_prodid”,以便我可以檢索該產品的“g:gtin”。 這是最好的方法嗎?如果是這樣,我將如何實現?

親切的問候:)

使用 ElementTree 解析您的 XMl 並遍歷您的 XML 中的項目,然后對這些項目使用查找以獲取相應的子標簽。

例子:

import xml.etree.ElementTree as ET

xmldata = """<?xml version='1.0' encoding='utf-8'?>
<channel xmlns:g="base.google.com/ns/1.0">
    <title>
        Google Shopping NL
    </title>
    <description>
        Google Shopping NL
    </description>
    <pubDate>
        Tue, 10 Jan 2023 09:30:35 -0000
    </pubDate>
    <item>
        <ecomm_prodid>123456</ecomm_prodid>
        <g:gtin>8714567834276</g:gtin>
        <g:price>17.95 EUR</g:price>
        <title>Unique Living Teddy plaid - Bruin - 200x150cm</title>
    </item>
    <item>
        <ecomm_prodid>56789</ecomm_prodid>
        <g:gtin>871987731105</g:gtin>
        <g:price>29.90 EUR</g:price>
        <title>Tristar OV-1431 oven 35x25 - 800W - 230V</title>
    </item>
</channel>
"""

xml = ET.fromstring(xmldata) # use ET.parse(filename) to parse from file
for item in xml.findall('item'):
    prodid = item.find('ecomm_prodid').text
    gtin = item.find('g:gtin', {"g": "base.google.com/ns/1.0"}).text
    # Now you can access prodid and gtin
    print(f"{prodid} - {gtin}")

使用 pandas,您可以使用 read_xml() 解析項目:

import pandas as pd

ns = {"xmlns:g" : "http://base.google.com/ns/1.0"}
df = pd.read_xml("google.xml", xpath=".//item", namespaces=ns)
print(df[['ecomm_prodid', 'gtin']])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM