3

我是 Python 新手,需要一些帮助。网络不是很有帮助。简而言之,我有一个如下所示的网络响应:

<html>
  <field>123</field>
  <field>456</field>
</html>

我要做的是将字段元素中的所有内容放入我可以索引的数组中。最终结果将如下所示:

myArray[0] = 123
myArray[1] = 456

等等...

我最终要做的是运行一个随机数生成器来随机选择这个数组中的一个元素并检索它的值。

这可能吗?我似乎无法在网上找到直接的答案,所以我觉得我可能要求错了。

4

4 回答 4

8

如果您正在做类似的简单事情,您可能需要查看Python 中内置的ElementTree模块。你不需要安装任何额外的东西,它都包含在 python 中

import xml.etree.ElementTree as ET

filename='data.txt'
tree = ET.parse(filename)
root = tree.getroot()
myArray=[]

for x in root.findall('field'):
    myArray.append(x.text)

print(myArray)  
于 2012-11-14T05:58:14.923 回答
2

到目前为止,从 HTML 中提取信息的最简单方法是BeautifulSoup。这是获取所需列表的片段:

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(html_text)
>>> fields = [int(el.text) for el in soup.find_all("field")]
>>> fields
[123, 456]

由于您是 Python 新手:

  1. 我们来自模块import的类(您需要安装 - 请参阅上面的链接)。BeautifulSoupbs4
  2. 我们创建一个名为from的BeautifulSoup实例。souphtml_text
  3. 我们fields使用列表推导式创建一个名为 的列表:
    • textofel转换为integer
    • for每个el
    • 我们通过fieldsoup
于 2012-11-14T05:18:14.970 回答
1

我会使用 XPath Xpath python来解析这些值并将它们插入到一个列表中,首先声明并清空列表my_list=[],然后附加这些值my_list.append(parsed_value)

于 2012-11-14T05:16:38.377 回答
-2

看看标准模块! http://docs.python.org/2/library/htmlparser.html#examples

如果您仅对问题中的情况需要此选项,请尝试此操作,它将所有标签替换为' '(空格),并将str.split结果文本拆分为一个或多个空格作为分隔符

import re
def get_data(str_data):
    return re.sub(r'<.*?>',' ', str_data).split()

str_data = """<html>
  <field>123</field>
  <field>456</field>
</html>"""

print get_data(str_data) # prints "['123', '456']"

对不起我的英语不好

于 2012-11-14T05:36:17.283 回答