Я бы предложил заглянуть в ElementTree. Это то, что вам нужно. В качестве быстрого примера:
import xml.etree.cElementTree
doc = xml.etree.cElementTree.parse( filename )
for e in doc.getiterator( 'title' ):
book_title = e.attrib[ 'titletext' ]
Очевидно, что я не обрабатываю условия ошибки, но достаточно использовать try / исключением или проверку, чтобы определить, присутствует ли в заголовке 'titletext'.
Если вы ищете определенный тег, а не атрибут тега, приведенный выше код все равно будет работать:
import xml.etree.cElementTree
doc = xml.etree.cElementTree.parse( filename )
for e in doc.getiterator( 'titletext' ):
book_title = e.text
В общем, с ElementTree работать легче, чем с BeautifulSoup, по крайней мере, для тех вещей, с которыми я работаю. Я обнаружил, что он немного быстрее для наших дел и легче обрабатывает дела, подобные вашему (на мой взгляд).
НТН.