[英]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.