使用lxml find元素从API解析Arxiv XM​​L

时间:2016-09-27 22:25:09

标签: python lxml

我从Arxiv获取xml,我希望在使用substkey.py settings.py > settings.tmp 库读取后解析所有Arxiv条目。这是我的代码,用于获取100篇文章的XML文件。

lxml

现在,我必须按照以下步骤查找xml中的所有条目。

import urllib
from lxml import etree

start_index = 0
results_per_iteration = 100
base_url = 'http://export.arxiv.org/api/query?'
search_query = 'cat:cs.CV+OR+cat:cs.LG+OR+cat:cs.CL+OR+cat:cs.NE+OR+cat:stat.ML'
query = 'search_query=%s&sortBy=lastUpdatedDate&start=%i&max_results=%i'\
    % (search_query, start_index, start_index + results_per_iteration)

response = urllib.request.urlopen(base_url + query).read() # python 3.x
# response = urllib.urlopen(base_url + query).read() # python 2.x
tree = etree.fromstring(response)

为了找到e_ = tree.findall('{http://www.w3.org/2005/Atom}entry') ,我必须执行以下操作

id

问题我想知道是否有办法解析此XML,我们在查找元素print(e_.find('{http://www.w3.org/2005/Atom}id').text) 或{{}时无需提供{http://www.w3.org/2005/Atom} 1}}脚本,其功能与feedparser类似。

1 个答案:

答案 0 :(得分:1)

您可以使用以下XPath表达式通过其 local-name 匹配元素,忽略命名空间:

e_ = tree.xpath('*[local-name()="entry"]')