无法从一大块xml元素中解析一些名称

时间:2018-05-14 21:05:48

标签: python xml python-3.x web-scraping beautifulsoup

我已经在python中编写了一个与BeautifulSoup结合使用的脚本来解析一些xml元素中的一些名称但由于某种原因,脚本在print语句之前抛出属性错误。我怎样才能使它工作?提前谢谢。

到目前为止我已尝试过:

from bs4 import BeautifulSoup

content="""
 <ns:Car>
  <ns:Model>sedan</ns:Model>
  <ns:Model>coupe</ns:Model>
  <ns:Model>hatchback</ns:Model>
  <ns:Model>convertible</ns:Model>
 </ns:Car>
"""
soup = BeautifulSoup(content,"xml")
for items in soup.find("ns:Car").find_all("ns:Model"):
    print(items)

预期产出:

sedan
coupe
hatchback
convertible

它抛出的错误:

    for items in soup.find("ns:Car").find_all("ns:Model"):
AttributeError: 'NoneType' object has no attribute 'find_all'

顺便说一下,我不愿意遵守与regular expression相关的任何解决方案。我喜欢使用BeautifulSoup解析相同内容。

1 个答案:

答案 0 :(得分:0)

您对soup.find("ns:Car")的调用是返回NoneType类型的对象,而您正在尝试调用此find_all对象的NoneType方法。尝试将最后几行更改为:

for items in soup.find("Car").find_all("Model"):
    print(items)