下面的链接使我们在recipelist配料表。 我想提取成分的名称和使用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()
我如何提取每种成分的名称,并将其保存到另一个文件?
@Neha
我猜你现在解决您的要求,这里是我放在一起使用教程,在一小片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包装看起来非常好,它绝对值得使用。 谢谢
请将相关的XML文本,以获得正确的答案。 也请考虑使用LXML为任何特定的XML(包括HTML)。
试试这个 :
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]
这仅仅是起步,但我认为你从这里得到的想法 - >获取每个ingredient_name并从那里等成分/数量父。 你真的不能做任何其他的搜索,我认为由于文档的结构化特性。
你可以阅读更多[www.lxml.de]
前一段时间我做了一系列解释如何收集来自网站的数据截屏。 该代码是在Python和有关于XML 2个视频与LXML库解析。 所有的视频张贴在这里: http://railean.net/index.php/2012/01/27/fortune-cowsay-python-video-tutorial
你想要的是:
- XPath的实验和查询示例
- Python和LXML,与Python XPath查询的例子
- 通过HTTP和HTML与LXML解析自动检索页
您将学习如何编写和测试XPath查询,以及如何在Python运行这些查询。 例子很简单,我希望你会发现他们有帮助。