我有这个 XML 文件:
<movie id = 0>
<Movie_name>The Shawshank Redemption </Movie_name>
<Address>http://www.imdb.com/title/tt0111161/
</Address>
<year>1994 </year>
<stars>Tim Robbins Morgan Freeman Bob Gunton </stars>
<plot> plot...
</plot>
<keywords>Reviews, Showtimes</keywords>
</movie>
<movie id = 1>
<Movie_name>Inglourious Basterds </Movie_name>
<Address>http://www.imdb.com/title/tt0361748/
</Address>
<year>2009 </year>
<stars>Brad Pitt Mélanie Laurent Christoph Waltz </stars>
<plot>plot/...
</plot>
<keywords>Reviews, credits </keywords>
</movie>
如何迭代文件为每部电影提取其特定数据?我的意思是电影 0:它的名称、地址、年份等等。
输入文件结构是强制性的,因此可以在循环中提取数据。
非常感谢。
请您参考如下方法:
编辑——采用改进的 XML 输入
我强烈建议您按照@Lattyware 的评论尝试验证您的输入。我发现对于无效的 XML 和 HTML,BeautifulSoup 可以很好地恢复可用的内容。以下是它的快速尝试:
from BeautifulSoup import BeautifulSoup
# Note: I have added the <movielist> root element
xml = """<movielist>
<movie id = 0>
<Movie_name>The Shawshank Redemption </Movie_name>
<Address>http://www.imdb.com/title/tt0111161/
</Address>
<year>1994 </year>
<stars>Tim Robbins Morgan Freeman Bob Gunton </stars>
<plot> plot...
</plot>
<keywords>Reviews, Showtimes</keywords>
</movieNum>
<movie id = 1>
<Movie_name>Inglourious Basterds </Movie_name>
<Address>http://www.imdb.com/title/tt0361748/
</Address>
<year>2009 </year>
<stars>Brad Pitt Mélanie Laurent Christoph Waltz </stars>
<plot>plot/...
</plot>
<keywords>Reviews, credits </keywords>
</movieNum>
</movielist>"""
soup = BeautifulSoup(xml)
movies = soup.findAll('movie')
for movie in movies:
id_tag = movie['id']
name = movie.find("movie_name").text
url = movie.find("address").text
year = movie.find("year").text
stars = movie.find("stars").text
plot = movie.find("plot").text
keywords = movie.find("keywords").text
for item in (id_tag, name, url, year, stars, plot, keywords):
print item
print '=' * 50
这将输出以下内容(现在可以访问 ID 标签):
0
The Shawshank Redemption
http://www.imdb.com/title/tt0111161/
1994
Tim Robbins Morgan Freeman Bob Gunton
plot...
Reviews, Showtimes
==================================================
1
Inglourious Basterds
http://www.imdb.com/title/tt0361748/
2009
Brad Pitt Mélanie Laurent Christoph Waltz
plot/...
Reviews, credits
==================================================
希望它能给你一个开始......它只会从这里变得更好。
