【问题标题】:Beautiful Soup NoneType error美丽的汤 NoneType 错误
【发布时间】:2017-02-20 07:25:57
【问题描述】:

我正在尝试用 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)

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

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

是否有可能 quest 变量不是字符串?还是我做错了什么?

【问题讨论】:

    标签: beautifulsoup


    【解决方案1】:
    for quest in soup.find_all('quest', {"id":questid}):
        print(quest)
        # questSoup = BeautifulSoup(quest)
        for floor in quest.find_all('location_id'):
            print(floor)
    

    不需要从tag 对象构建一个新的soup 对象,您可以在它们上使用find_all,因为它们都是可导航的字符串,因此它们的行为方式相同并且可以以相同的方式访问方式。

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


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

    出来:

    '[document]'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多