1

我已经写了一半的代码来从 RSS 提要中提取标题和链接,但它会导致上述错误。获取文本时,两个函数都出现错误。我想去掉标题和链接标签的输入字符串。

from bs4 import BeautifulSoup
import urllib.request
import re

def getlink(a):
    a= str(a)
    bsoup=BeautifulSoup(a)
    a=bsoup.find('link').getText()
    return a

def gettitle(b):
    b=str(b)
    bsoup=BeautifulSoup(b)
    b=bsoup.find('title').getText()
    return b

webpage= urllib.request.urlopen("http://feeds.feedburner.com/JohnnyWebber?format=xml").read()

soup=BeautifulSoup(webpage)
titlesoup=soup.findAll('title')
linksoup= soup.findAll('link')

for i,j in zip(titlesoup,linksoup):
    i = getlink(i)
    j= gettitle(j)

    print (i)
    print(j)
    print ("\n")

编辑falsetru 的方法效果很好

我还有一个问题。可以通过执行从任何标签中提取文本getText吗?

4

3 回答 3

1

我预计问题出在

def getlink(a):
    ...
    a=bsoup.find('a').getText()
    ....

记住 find 匹配标签名称,没有link标签,只有a标签。如果没有匹配的标签,BeautifulSoup 将从 find 返回 None,因此出现 NoneType 错误。检查文档以获取详细信息。

编辑:

如果您真的在寻找文本“链接”,您可以使用bsoup.find(text=re.compile('link'))

于 2013-10-27T06:39:11.030 回答
0

ijtitlelink已经。怎么又找到了?

for i, j in zip(titlesoup, linksoup):
    print(i.getText())
    print(j.getText())
    print("\n")

除此之外,如果您解析 xml 文件,请传递features='xml'给。BeautifulSoup

soup = BeautifulSoup(webpage, features='xml')
于 2013-10-27T06:39:02.180 回答
0

b=bsoup.find('title')返回None

尝试检查您的输入

于 2013-10-27T06:46:28.477 回答