У меня есть файл, заполненный предложениями, завернутыми в хорошо сформированный XML (xmllint и tidylib говорит так). Так что XML выглядит следующим образом:xml разоблачение необъяснимо
<a id="100" attr1="text" attr1="text" attr1="text">
<tagname id="1">
This is my sentence.
</tagname>
</a>
<a id="101" attr1="text" attr1="text" attr1="text">
<tagname id="1">
This is my sentence.
</tagname>
</a>
и так далее.
Я использую следующий код для извлечения предложений с атрибутом (в данном случае с идентификатором 1 до 85)
a1 = open(r"file.xml",'r')
a = a1.readlines()
a1.close()
soup = BeautifulSoup(str(a))
for i in range(1,85):
a = soup.find('a', {'id': i})
achild = a.find('tagname')
tagnametext = achild.contents
print tagnametext
все, печатает красиво, до предложения 84, на котором я получаю ошибку: achild = a.find ('tagname') AttributeError: объект «NoneType» не имеет атрибута «find»
Каждый набор ... генерируется с помощью цикла for, так что xml все равно. Я пробовал с разными файлами с различным количеством предложений. Идентификатор, при котором происходит ошибка, также изменяется. Является ли это ограничением beautifulsoup? Что он не может просканировать прошедшее определенное количество строк?
Что идентификационный номер 84 выглядит? – TerryA