編集-改善された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
==================================================
それはうまくいけばあなたにスタートを与えるでしょう...それはここからのみ良くなることができます。