Я использую xpath для фильтрации потока XML с тегами "item".Из списка результатов я беру первый результат и использую xpath для фильтрации тега «title».Тем не менее, когда я фильтрую «заголовок», я получаю заголовок из XML, который не имеет тега «элемент».Поскольку я выполняю xpath для набора результатов "item", поведение является неожиданным.Может кто-нибудь сказать мне, что здесь происходит.
См. Код ниже, используя xpath.
from urllib.request import urlopen
from lxml import etree
url = 'https://www.sec.gov/Archives/edgar/monthly/xbrlrss-2018-02.xml'
data = urlopen(url)
xml = data.read()
parser = etree.XMLParser(remove_blank_text=True, huge_tree=True)
root = etree.XML(xml, parser=parser)
items = root.xpath("//item")
first_item = items[0]
title = first_item.xpath("//title")[0].text
print(title)
#'All XBRL Data Submitted to the SEC for 2018-02'
Я ожидал, что первый элемент будет следующим:
<item>
<title>DST SYSTEMS INC (0000714603) (Filer)</title>
<link>http://www.sec.gov/Archives/edgar/data/714603/000071460318000013/0000714603-18-000013-index.htm</link>
<guid>http://www.sec.gov/Archives/edgar/data/714603/000071460318000013/0000714603-18-000013-xbrl.zip</guid>
<enclosure url="http://www.sec.gov/Archives/edgar/data/714603/000071460318000013/0000714603-18-000013-xbrl.zip" length="470442" type="application/zip" />
<description>10-K</description>
<pubDate>Wed, 28 Feb 2018 17:29:39 EST</pubDate>
<edgar:xbrlFiling xmlns:edgar="http://www.sec.gov/Archives/edgar"></item>
Вместо этого, когда я это сделаю: title = first_item.xpath ("// title"). Text, я получаюtitle as '' Все данные XBRL, отправленные в SEC за 2018-02 гг. *
Название исходит от:
<channel>
<title>All XBRL Data Submitted to the SEC for 2018-02</title>
<link>http://www.sec.gov/spotlight/xbrl/filings-and-feeds.shtml</link>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" href="http://www.sec.gov/Archives/edgar/monthly/xbrlrss-2018-02.xml" rel="self" type="application/rss+xml" />
<description>This is a list all of the filings containing XBRL for 2018-02</description>
<language>en-us</language>
<pubDate>Wed, 28 Feb 2018 00:00:00 EST</pubDate>
<lastBuildDate>Wed, 28 Feb 2018 00:00:00 EST</lastBuildDate>
Но я запустил xpath для элементов, который выполнил xpath ("Предметы").Я не уверен, почему я не получаю ожидаемый результат «DST SYSTEMS INC (0000714603) (Filer)».