我有一个如下所示的 XML 文件:
我想从此文件中获取所有事件的以下信息:
在类别事件下:
- 开始日期
- 结束日期
- 标题
在类别场地下:
- 地址
- 地址2/
- 城市
- 纬度
- 经度
- 姓名
- 邮政编码
然后将此信息存储在 mongodb 数据库中。我在解析方面没有太多经验。有人可以帮我解决这个问题吗!谢谢 !
这是一个使用lxml从 url 解析 xml 并使用pymongo将数据插入 mongodb 的示例:
from urllib2 import urlopen
import pymongo
from lxml import etree
# parse xml file
root = etree.parse(urlopen('https://www.eventbrite.com/xml/event_search?app_key=USO53E2ZHT6LM4D5RA&country=DE&max=100&date=Future&page=1'))
events = []
for event in root.xpath('.//event'):
event = {'start_date': event.find('start_date').text,
'end_date': event.find('end_date').text,
'title': event.find('title').text}
events.append(event)
# insert the date into MongoDB
db = pymongo.MongoClient()
collection = db.test
collection.insert(events)
解析venue
项目作为“作业”留给您。
请注意,还有其他 xml 解析器,例如:
希望有帮助。
from pymongo import MongoClient
import xml.etree.ElementTree as ET
from urllib2 import urlopen
cl = MongoClient()
coll = cl["dbname"]["collectionname"]
tree = ET.parse("https://www.eventbrite.com/xml/event_search?app_key=USO53E2ZHT6LM4D5RA&country=DE&max=100&date=Future&page=1")
root = tree.getroot()
for event in root.findall("./event"):
doc = {}
for c in event.getchildren():
if c.tag in ("start_date", "end_date", "title"):
doc[c.tag] = c.text
elif c.tag == "venue":
doc[c.tag] = {}
for v in c.getchildren():
if v.tag in ("address", "address_2", "city", "latitude", "longitude", "name", "postal_code"):
doc[c.tag][v.tag] = v.text
coll.insert(doc)