2

以下のリンクは、レシピリストの材料のリストを示しています。材料の名前を抽出し、Pythonを使用して別のファイルに保存したいと思います。 http://stream.massey.ac.nz/file.php/6087/Eva_Material/Tutorials/recipebook.xml

これまで、次のコードを使用してみましたが、材料の名前ではなく、完全なレシピが表示されます。

from xml.sax.handler import ContentHandler
import xml.sax
import sys
def recipeBook(): 
    path = "C:\Users\user\Desktop"
    basename = "recipebook.xml"
    filename = path+"\\"+basename
    file=open(filename,"rt")
    # find contents 
    contents = file.read()

    class textHandler(ContentHandler):
      def characters(self, ch):
      sys.stdout.write(ch.encode("Latin-1"))
    parser = xml.sax.make_parser()
    handler = textHandler( )
    parser.setContentHandler(handler)
    parser.parse("C:\Users\user\Desktop\\recipebook.xml")



  file.close()

各成分の名前を抽出して別のファイルに保存するにはどうすればよいですか?

4

3 に答える 3

3

@ネハ

これでリクエストは解決したと思います。ここに、 http://lxml.de/tutorial.htmlのチュートリアルを使用してまとめた小さなピースがあります。XML ファイルは「rough_data.xml」に保存されます

import xml.etree.cElementTree as etree

xmlDoc = open('rough_data.xml', 'r')
xmlDocData = xmlDoc.read()
xmlDocTree = etree.XML(xmlDocData)

for ingredient in xmlDocTree.iter('ingredient'):
    print ingredient[0].text

これを読んでいるすべての経験豊富な Python プログラマーには、この「初心者」コードを親切に改善してください。

注: lxml パッケージは非常に優れているように見えます。使用する価値があることは間違いありません。ありがとう

于 2013-01-14T15:59:25.983 に答える
1

適切な回答を得るために、関連する XML テキストを配置してください。また、xml 固有のもの (html を含む) にはlxmlの使用を検討してください。

これを試して :

from lxml import etree

tree=etree.parse("your xml here")
all_recipes=tree.xpath('./recipebook/recipe')
recipe_names=[x.xpath('recipe_name/text()') for x in all_recipes]
ingredients=[x.getparent().xpath('../ingredient_list/ingredients') for x in recipe_names]
ingredient_names=[x.xpath('ingredient_name/text()') for x in ingredients]

これは最初だけですが、ここからアイデアを得ると思います->各成分名から親を取得し、そこから成分/量を取得します。ドキュメントの構造化された性質のために、他の種類の検索を実際に行うことはできません。

[www.lxml.de]で詳細を読むことができます

于 2012-05-07T06:59:44.077 に答える
0

少し前に、サイトからデータを収集する方法を説明する一連のスクリーンキャストを作成しました。コードは Python で書かれており、lxmlライブラリを使用した XML 解析に関する 2 つのビデオがあります。すべてのビデオはここに投稿されています: http://railean.net/index.php/2012/01/27/fortune-cowsay-python-video-tutorial

必要なものは次のとおりです。

  • XPath の実験とクエリの例
  • Python と LXML、Python を使用した XPath クエリの例
  • lxml を使用した HTTP および HTML 解析によるページ取得の自動化

XPath クエリを記述してテストする方法と、そのようなクエリを Python で実行する方法を学習します。例は簡単です。参考になることを願っています。

于 2012-05-18T22:22:01.180 に答える