【问题标题】:Python BeautifulSoup returning NoneType during loopPython BeautifulSoup 在循环期间返回 NoneType
【发布时间】:2013-07-05 04:02:22
【问题描述】:

大家好,我对文件进行了一些编辑,但遇到了问题。 Python 代码从文本文档的行中获取页面 id,并将 id 粘贴到 url 模板中以解析生成的 XML。但是,代码为除最后一行之外的每一行返回 NoneTypes。因此,它会打印页面 ID(在 for 循环之前),但不会打印 for 循环中的任何信息。任何想法为什么?

from bs4 import BeautifulSoup
import urllib

    with open("list.txt") as f:
        for line in f:
            link = "http://somewebsite.com/application?number="+line+"&tab=main&xml=ab14"
            print "Page ID: "+line
            xml_string= urllib.urlopen(link)
            result = soup.find('someXML-tag')
            if result is not None:
                status = result['status']
                print "\nApplication Status: "+status+"\n"
            else:
                print "it was nonetype"

每个 XML 文档的格式:

    <?xml version="1.0" encoding="UTF-8"?>
    <first-XMLtag>
       <someXML-tag id="100001" status="OPEN">
       </someXML-tag>
    </first-XMLtag>

我的输出:

PageID: 100000
it was nonetype

PageID: 100001
it was nonetype

PageID: 100002
Application Status: Open

文本文件有几行。

【问题讨论】:

  • BeautifulSoup的语法
  • 嗯,是的,我知道,但很明显,汤里没有"someXML-tag",这就是它返回 None 的原因
  • someXML-tag 是我在我的 XML 文档中寻找的标签,所以 BeautifulSoup 在每一页上查找该特定标签。我还知道,这些页面中的每一页都有一个someXML-tag,它们都遵循相同的格式。
  • 是的,我知道 BeautifulSoup 是什么,但是soup 的内容是什么?我帮不了你,我认为其他人也帮不了你,除非看到那个或至少是你试图从中获取内容的网站
  • 刚刚用每个 XML 的格式编辑了问题,对不起,我最初没有包括那个

标签: python xml parsing beautifulsoup


【解决方案1】:

啊,不是汤什么的。我是line

当您浏览一个文件时,每一行的末尾都会有一个\n(一个新行)。这是放在网站 URL 上的,因此汤什么也不返回。

这样做:

link = "http://somewebsite.com/application?number="+line.rstrip('\n')+"&tab=main&xml=ab14"

这会从行的右侧剥离新行

【讨论】:

  • 非常感谢!你完全正确,我根本不知道换行方面。再次感谢您,这让我感到困惑太久了。 +1
猜你喜欢
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
  • 2019-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-21
相关资源
最近更新 更多