2017-11-15 11 views
3

私はプログラミングにとても慣れていて、自分自身でPythonでウェブスクレイピングを始めました。 サイトの複数のページからプレーヤーのデータを掻き集め、次のプレイヤーのページに移動するための 'next'ボタンのhrefをスクラップするwhileループを作成しました。 最後のプレーヤーが利用可能になった後にwhileループを解除する以外は、すべてうまくいきます。 'next'ボタンは灰色で表示され、その背後にはリンクがないため、繰り返しを停止してすべてをcsvに保存します。NoneTypeの変数をチェックしてwhileループを中断する

私のスクリプトは次のようになります。私はそのためのチェックが破断「Noneです」が、私はこのエラーを取得し、取得したのhrefが空の場合、私がチェックできると思っていた

#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 

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

大歓迎です!私はこれに非常に新しいので、私の初心者のコードを無視してください。

答えて

1

あなたはlinkはそれですべての操作を行う前にNoneあるかどうかを確認して、ループを破ることができます。

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

なぜだけではなく、 'リンクがNone場合:' link'の利用上記break'? – BallpointBen

+0

これは実際にOPの希望の答えに似ているように見えるので、実際にはより良い答えになります。私はこのように読みやすくするために書きました。 –

関連する問題