2017-11-15 12 views
3

저는 프로그래밍에 익숙하지 않고 파이썬으로 웹 스크래핑을 가르치기 시작했습니다. 사이트의 여러 페이지에서 플레이어 데이터를 스크랩하고 while 루프를 작성하여 'next'버튼의 href를 긁어 다음 플레이어의 페이지로 이동합니다. 마지막 플레이어를 사용할 수있게 된 후 while 루프가 깨지는 것을 제외하면 모든 것이 정상적으로 작동합니다. '다음'버튼이 회색으로 표시되고 그 뒤에 링크가 없으므로 반복을 중지하고 모든 것을 CSV로 저장하려고합니다. 그러므로 확인 및 파괴 '아무도 없다', 내가 검색된 HREF이 비어있는 경우 내가 확인할 수 있습니다 생각NoneType을위한 변수를 확인하고 while 루프를 깨기.

#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

왜 그냥'링크가 없음없는 경우 :'link'의 사용 위의 break'? – BallpointBen

+0

그것은 OP의 원하는 대답과 더 유사하기 때문에 실제로는 더 나은 대답이 될 것입니다. 나는 이것을 가독성 목적으로 썼다. –