3

私はPythonを初めて使用するので、助けが必要です。ウェブはあまり役に立ちませんでした。簡単に言えば、次のようなWeb応答があります。

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

私がやろうとしているのは、フィールド要素のすべてのコンテンツを、インデックスを作成できる配列に取り込むことです。最終結果は次のようになります。

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

等々...

これで最終的に行うのは、乱数ジェネレーターを実行して、この配列内の要素の1つをランダムに選択し、その値を取得することです。

これは可能ですか?ウェブ上で正解が見つからないようですので、間違ったことを聞いているような気がします。

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モジュールのBeautifulSoupクラスbs4です(インストールする必要があります。上記のリンクを参照してください)。
  2. fromからBeautifulSoup呼び出されるインスタンスを作成します。souphtml_text
  3. fieldsリスト内包表記を使用して、 と呼ばれるリストを作成します。
    • のをegertextに変換しますelint
    • forel
    • fieldのすべての要素を見つけることで得られますsoup
于 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結果のテキストが1つ以上のスペースで区切り文字として分割されます。

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 に答える