使用“ getElementsByTagName”在Python中获取标签<string name =“ ID”>

韦巴哈夫

我的XML文件是

<list>
  <ProfileDefinition>
    <string name="ID">nCGhwaZNpy6</string>
    <string name="name">02.11.2013 Scott Mobile</string>
    <decimal name="AccountID">10954</decimal>
    <decimal name="TimeZoneID">-600</decimal>
  </ProfileDefinition><ProfileDefinition>
    <string name="ID">9JsG57bRUu6</string>
    <string name="name">Huggies US-EN & CA-EN Test Town Responsive - Prod</string>
    <decimal name="AccountID">10954</decimal>
    <decimal name="TimeZoneID">-600</decimal>
  </ProfileDefinition><ProfileDefinition>
    <string name="ID">I3CJQ4gDkK6</string>
    <string name="name">Huggies US-EN Brand Desktop - Prod</string>
    <decimal name="AccountID">10954</decimal>
    <decimal name="TimeZoneID">-600</decimal></ProfileDefinition>

我的代码是

import urllib2

theurl = 'https://ws.webtrends.com/v2/ReportService/profiles/?format=xml'




pagehandle = urllib2.urlopen(theurl)



##########################################################################

from xml.dom.minidom import parseString

file = pagehandle


data = file.read()

file.close()

dom = parseString(data)

xmlTag = dom.getElementsByTagName('string name="ID"')[0].toxml()

xmlData=xmlTag.replace('<string name="ID">','').replace('</string>','')

print xmlTag

print xmlData

我想获取标记名称为'string name =“ ID”'的元素的值

但是错误来了

Traceback (most recent call last):
  File "C:\Users\Vaibhav\Desktop\Webtrends\test.py", line 43, in <module>
    xmlTag = dom.getElementsByTagName('string name="ID"')[0].toxml()
IndexError: list index out of range

如果我更换

dom.getElementsByTagName('string name="ID"')[0].toxml()

dom.getElementsByTagName('string')[0].toxml()

输出到

“ nCGhwaZNpy6”

因为它是该列表的第一个元素,但第二个元素是

“ 2013年11月11日,Scott Mobile”

这也被保存在我不想要的列表中

但是,有两个具有name =“ ID”和name =“ name”的字符串标签如何仅访问具有name =“ ID”的字符串标签

虚假的

string name="ID"不是标签名称。唯一的string是标签名称。

您必须比较每个string标签的名称属性值

....
dom = parseString(data)
for s in dom.getElementsByTagName('string'):
    if s.getAttribute('name') == 'ID':
        print s.childNodes[0].data

我建议您使用lxmlBeautifulSoup

以下是使用lxml的等效代码。

import lxml.html
dom = lxml.html.fromstring(data)
for s in dom.cssselect('string[name=ID]'):
    print s.text

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用python从多个ul标签中获取id列表?

使用 GTM 从 Div 标签中获取 ID

如何使用jquery从元素属性中的“name[ID][OTHER]”中获取“ID”值?

Ruby on Rails,如何使用Nokogiri在XML的标签中获取ID?

使用 jquery 在选择标签中获取数据 ID

什么时候在猫鼬中对ObjectId(“ string-id”)使用新的ObjectId(“ string-id”)?

JQ(获取基于NAME的ID)

如何使用getElementsByTagName()方法获取body标签的内容并将其存储在变量中

使用 javascript 替换 id 和 name

使用输入属性 (id, name) 为文本类型的每个输入创建一个标签

如何在 Google Classroom 中使用 Topic Name 获取 Topic ID?

通过在 javascript 中使用 Name 而不是 Id 来获取输入类型文本的值

如何在codeigniter视图页面中使用用户ID打印(获取)user_name

使用XPath获取ID为ID的标签的href属性

如何使用python僅以json格式檢索與平台mac關聯的id和name

Python Selenium:使用 webdriver 定位并单击 -> 工具提示可见,没有“id”或“name”

Selenium 找不到任何使用 css、xpath、name、id 的元素(python)

如何使用object.id从列表中显示object.name

如何使用Linq在c#中的List中将Name值设置为ID?

如何在stream() api中获取id、name和table

Python 数据丰富 - 使用 getattr 调用基于 Name-String 的函数

使用变量时,python 2.7 string_name.find()函数始终返回-1

使用string.concat设置控件ID

无法使用Python在PostgreSQL中获取最后插入的ID

使用python中的类或ID从网站上的<p>获取文本

在帖子中获取标签ID

如何使用python beautiful soup从HTML下面获取标签和ID信息

Python,Tkinter:如何使用其ID或标签获取所有画布对象的句柄?

使用Selenium获取标签“ h1”和id中的信息