我的任务是获取kml文件,提取1个标记值并将其发送到geojson中的Mongo。 我将文件作为二进制请求对象。
doc = requests.get(file).content #returning a XML tree.
我的问题是找到“最佳”方法从标签中获取值。考虑我有多个需要按分钟扫描的来源,所以即使一次运行可能不会花费那么长时间,它也会积累(意识到实际的文件导入将比任何提取过程花费更多)。
我尝试过的方法是BeautifulSoup,切片和正则表达式。它们都运行良好,但我希望得到关于替代品和/或利弊的一些意见。
def extractsubstring_soup(doc, start):
soup = BeautifulSoup(doc, 'lxml-xml')
return soup.start.string
def extractsubstring_re(doc, start, stop):
return re.search('%s(.*)%s' %(start, stop), a).group(1)
def extractsubstring_slice(doc,start, stop):
substart = doc.index(start) + len(start)
subend = doc.index(end)
return doc[substart:subend]
答案 0 :(得分:0)
为了提高性能,您可以使用http://lxml.de/并使用XPath查询来提取所需的信息。
BeautifulSoup是不同库的包装器 - 您可以选择哪一个 - 但通常是用于解析HTML而不是XML。