【发布时间】:2018-05-22 02:22:57
【问题描述】:
我遇到了一组子标签没有完全解析的问题。我对其他标签遵循与此相同的逻辑,但由于某些原因,我看不到它跳过了我想要的标签的第一个条目之外的所有内容。我当前脚本的基本 sn-p 如下所示:
for xml_string in separated_xml(infile):
soup = BeautifulSoup(xml_string, "lxml")
us_grant = soup.findAll("us-patent-grant")
with open('./output.csv', 'ab+') as f:
writer = csv.writer(f, dialect = 'excel')
for info in us_grant:
data = []
us_class_search = soup.findAll("us-field-of-classification-search")
for item2 in us_class_search:
if item2.find("classification-national"):
country_search = item2.find("country")
main_class_search = item2.find("main-classification")
data.append((country_search).text)
data.append((main_class_search).text)
print(data)
一旦我在每次迭代后print(data),它只会给我每个 country 和 main-classification 标签下的每个 first entry em>us-patent-grant 父母;但还有更多。例如,带有这些标签的 XML 文件如下所示:
<us-field-of-classification-search>
<classification-national>
<country>US</country>
<main-classification>D 1100-130</main-classification>
<additional-info>unstructured</additional-info>
</classification-national>
<classification-national>
<country>US</country>
<main-classification>D 1199</main-classification>
</classification-national>
<classification-national>
<country>US</country>
<main-classification>426 5</main-classification>
</classification-national>
<classification-national>
<country>US</country>
<main-classification>426 76</main-classification>
</classification-national>
</us-field-of-classification-search>
我知道 if item2 语句 没有正确执行,因为即使我将其取出,它仍然会以相同的方式运行 for item2 循环;仅查找并附加每个标签下的第一个标签。这意味着它必须是循环本身没有运行并找到每个实例并将第一个标签视为所有实例。
有什么想法吗?我没有看到任何明显的逻辑错误。
如果您想查看 XML 本身,可以找到它here on USPTO
【问题讨论】:
标签: python xml parsing beautifulsoup tags