以下是我所拥有的一些XML代码的示例:
<VAST version="2.0">
<Ad id="602678">
<InLine>
<AdSystem>Acudeo Compatible</AdSystem>
<AdTitle>NonLinear Test Campaign 1</AdTitle>
<Description>NonLinear Test Campaign 1</Description>
<Creatives>
<Creative AdID="602678-NonLinear">
</Creative>
</Creatives>
</InLine>
</Ad>
</VAST>
此XML在线提供,因此我点击了特定的URL以获取此数据。但是,在某些情况下,没有返回任何内容,因此我正在寻找一种方法来验证“Creatives”节点是否存在于任何给定时间返回的任何内容中。我没有运气试过BeautifulSoup,但我认为更多的是HTML而不是XML。非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
假设你从这样的URL中检索XML:
import requests
r = requests.get(url)
if r.status_code == 200:
xml_tag_exists(r)
然后你只需构建一个简单的函数,它将根据所需的XML标记是否存在返回True
/ False
:
def xml_tag_exists(r):
return '<Creatives>' in r.text
例如,让我们选择following URL:
>>> import requests
>>> url = 'http://www.w3schools.com/xml/plant_catalog.xml'
>>> r = requests.get(url)
>>> if r.status_code == 200:
... print(r.text)
以上将返回以下格式的XML:
<CATALOG> <PLANT> <COMMON>Bloodroot</COMMON> <BOTANICAL>Sanguinaria canadensis</BOTANICAL> <ZONE>4</ZONE> <LIGHT>Mostly Shady</LIGHT> <PRICE>$2.44</PRICE> <AVAILABILITY>031599</AVAILABILITY> </PLANT> <PLANT> <COMMON>Columbine</COMMON> <BOTANICAL>Aquilegia canadensis</BOTANICAL> <ZONE>3</ZONE> <LIGHT>Mostly Shady</LIGHT> <PRICE>$9.37</PRICE> <AVAILABILITY>030699</AVAILABILITY> </PLANT> ... </CATALOG>
如果我们检查一些标签:
>>> if '<CATALOG>' in r.text:
... print(True)
...
True
所以,如果我这样做,我会写下这样的东西:
import requests
def xml_tag_exists(r):
return '<Creatives>' in r.text
def main():
r = requests.get('your_url_goes_here')
if r.status_code == 200:
xml_tag_exists(r)
if __name__ == '__main__':
main()
答案 1 :(得分:0)
您也可以使用XPath
from lxml import etree
f = StringIO(YOURS_XML)
tree = etree.parse(f)
creatives_node = tree.xpath('/Creatives')