我有一些代码会返回以下错误:
TypeError:无法转换' NoneType'反对意图
我已经看过其他人遇到同样类型的错误并在此处提出问题:
据我所知,错误的原因可能会有很大差异,具体取决于代码中NoneType的原因。我见过的许多案例对我没有帮助,因为很明显(或者由用户明确说明)导致NoneType的原因以及可能的解决方案。我是Python的新手,我无法解决代码中创建错误的问题。
我正在尝试为托管文本的网站创建一个基本的网络浏览器。我想要它做的是创建一个链接到这些文本的URL列表,以及每个文本的标题。这是我的原始代码:
import requests
from bs4 import BeautifulSoup
# Running this returns only links at the top of the page and from the tab bar.
# No links to Irish language texts are returned.
# Causes TypeError: Can't convert 'NoneType' object to str implicitly
def celt_crawl(max_pages):
url = 'http://celt.ucc.ie/irlpage.html'
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text)
for link in soup.findAll('a'):
# Next line causes error by creating 'NoneType'
href = "http://celt.ucc.ie/" + link.get('href')
name = link.string
print(href)
print(name)
# The name of the tab bar link is returned where present.
# This should ideally print the name of the relevant text.
celt_crawl (1)
我用注释标记了问题。
我试图以两种方式解决问题。首先我假设link.get('href')
可能通过返回空值导致问题,然后我假设它可能是name = link.string
。我尝试了以下两个if语句来修复它,但两者都返回相同的TypeError。
修复1。
if link.get('href') is None:
pass
else:
print(href)
print(name)
修复2。
href = "http://celt.ucc.ie/" + link.get('href')
name = link.string
if name is None:
pass
else:
print(href)
print(name)
我假设名称或href返回一个空值并导致代码在遇到这种情况时中断,导致TypeError和问题,只返回标签栏的URL,而不是我实际想要的文本链接。
如果有人能提供解释/解决方案,我真的很感激。
编辑以包含堆栈跟踪:
Traceback (most recent call last):
File "C:\Users\admd9\Desktop\Coding\Python\Web Crawlers\Web Crawler CELT.py", line 22, in <module>
celt_crawl (1)
File "C:\Users\admd9\Desktop\Coding\Python\Web Crawlers\Web Crawler CELT.py", line 15, in celt_crawl
href = "http://celt.ucc.ie/" + link.get('href')
TypeError: Can't convert 'NoneType' object to str implicitly
>>>