Python 3.x 检查变量的非类型并中断while循环

Python 3.x 检查变量的非类型并中断while循环,python-3.x,web-scraping,beautifulsoup,href,nonetype,Python 3.x,Web Scraping,Beautifulsoup,Href,Nonetype,我对编程非常陌生,并开始自学用Python进行网页抓取。 我正在从一个站点的多个页面上抓取玩家数据,并构建了一个while循环,它可以抓取一个“next”-按钮的href来访问下一个玩家的页面。 一切都很顺利,除了在最后一个玩家可用后打破while循环。“下一步”按钮将灰显,后面没有链接,因此我想停止迭代并将所有内容保存到csv 我的脚本如下所示: #name base url and first page to start BaseUrl = #url PageUrl = #also url

我对编程非常陌生,并开始自学用Python进行网页抓取。 我正在从一个站点的多个页面上抓取玩家数据,并构建了一个while循环,它可以抓取一个“next”-按钮的href来访问下一个玩家的页面。 一切都很顺利,除了在最后一个玩家可用后打破while循环。“下一步”按钮将灰显,后面没有链接,因此我想停止迭代并将所有内容保存到csv

我的脚本如下所示:

#name base url and first page to start

BaseUrl = #url
PageUrl = #also url

while True:

  #scraping tables

  try:
      # retrieve link for 'next' player in order
      link = soup.find(attrs={"class": "go_to_next_player"}).get('href')
      # join base url and new link href
      PageUrl = BaseUrl + link
      if link is None:
          break
  except IndexError as e:
      print(e)
      break

#writing to csv
我想我可以检查检索到的href是否为空,因此检查'is None'并中断,但我得到以下错误:

In line > PageUrl = BaseUrl + link
TypeError: must be str, not NoneType

非常感谢您的帮助!我对此非常陌生,因此请忽略我的初学者代码。

在对其进行任何操作之前,您可以检查
link
是否为
None
,然后中断循环:

if link is not None:
    PageUrl = BaseUrl + link
else:
    break

为什么不干脆
如果link为None:在
link
的用法之上中断
?这确实是一个更好的答案,因为它看起来更像OP想要的答案。我这样写是为了便于阅读。