美丽的汤NoneType错误

时间:2017-02-19 15:16:50

标签: beautifulsoup

我正在尝试用Python编写一个小脚本来帮助我完成一些比较繁琐的工作。我写了这个:

from bs4 import BeautifulSoup
import lxml
import os
import sys

questid = "1478"
soup = BeautifulSoup(open("Data/xmls/quests.xml"), "lxml")

for quest in soup.find_all('quest', {"id":questid}):
    print(quest)
    questSoup = BeautifulSoup(quest)
    for floor in questSoup.find_all('location_id'):
        print(floor)

这应该做的是获取一个名为“任务”的巨大xml的一部分,基于标签 - 及其属性 - “id”。然后它应该从该部分制作一个新的汤,并从中获取所有标签。现在,在我弄清楚我想要选择哪个任务ID之前(以及我将如何处理输入),我只是硬编码了一个(“1478”)。

到目前为止,脚本打印了任务,但无法从中创建新的汤。

任务变量是否可能不是字符串?或者我做错了什么?

1 个答案:

答案 0 :(得分:0)

for quest in soup.find_all('quest', {"id":questid}):
    print(quest)
    # questSoup = BeautifulSoup(quest)
    for floor in quest.find_all('location_id'):
        print(floor)

无需从soup对象构建新的tag对象,您可以对它们使用find_all,因为它们都是可导航的字符串,因此它们的行为方式相同,可以用同样的方式访问。

在我看来,soup对象是特殊的tag对象,名为document

import requests, bs4

r =requests.get('http://www.google.com')
soup = bs4.BeautifulSoup(r.text, 'lxml')
soup.name

出:

'[document]'