检查一个变量NoneType并打破while循环

时间:2017-11-15 00:09:59

标签: python-3.x web-scraping beautifulsoup href nonetype

我对编程非常陌生,并开始使用Python自学网页。 我正在从网站的多个页面中抓取玩家数据并构建一个while循环,它会抓住“下一个”按钮的href以进入下一个玩家的页面。 一切都很好,除了在最后一个玩家可用之后打破while循环。 'next'按钮将变灰并且后面没有链接,因此我想停止迭代并将所有内容保存到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

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

1 个答案:

答案 0 :(得分:1)

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

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