2012-08-06 5 views
2

나는 for-loop를 가진 webscraper를 만들었다. 이유는 모르겠지만 반환 할 URL을 반환하고 목록에서 다음 URL을 가져 오기 전에 NoneType 개체를 반환합니다. 스크립트를 느리게 만드는 것 이외에는 큰 문제가 아닙니다. 첫 번째 URL 이상을 인쇄 할 수 없기 때문이 아니라면 큰 문제는 아닙니다.BeautifulSoup 값만 인쇄하는 방법?

from BeautifulSoup import BeautifulSoup 
from mechanize import Browser 
br = Browser() 
page = br.open("https://bdkv2.borger.dk/foa/Sider/default.aspx?fk=22&foaid=11541520") 
html = page.read() 
soup = BeautifulSoup(html) 
link = soup.findAll('a') 
kommunelink = link[21:116] 
for kommune in kommunelink: 
    kommuneside = br.open(kommune['href']) 
    html2 = kommuneside.read() 
    soup2 = BeautifulSoup(html2) 
    hjemmesidelink = soup2.find('a', id='_uscAncHomesite') 
    print hjemmesidelink['href'] 

내 출력이처럼이 방법 :

http://www.albertslund.dk 

Traceback (most recent call last): 
File "C:\Users\kba\Desktop\kommuneskraber.py", line 14, in <module> 
print hjemmesidelink['href'] 
TypeError: 'NoneType' object has no attribute '__getitem__' 

내가 좋아하는 물건 장난 시도했다 : 변수 == 특정 클래스는, 다음 인쇄,하지만이 작동하지 않습니다. 예 :

If hjemmesidelink['href'] == <class 'BeautifulSoup.Tag'>: 
    print hjemmesidelink['href'] 

if hjemmesidelink.class == BeautifulSoup.Tag: 
    print hjemmesidelink['href'] 

어떻게해야할까요? 아니면 더 나은, 어떤 생각을 어디에/왜 내 스크립트가 루프를 통해 iterates 때마다 'NoneType'개체를 가져 오는 이유는? 무리 감사.

+0

위의 코드에서 들여 쓰기가 잘못되었으므로 파이썬 스크립트에 그대로 넣었습니까? –

+0

여전히 for 루프에서 들여 쓰기를 수정해야합니다. –

+0

이제 수정해야합니다. – kabp

답변

1

이것은 완전한 대답은 아니지만 의견을 보면 오류가 발생하지 않는다는 부분 만 대답합니다. hjemmesidelink는 값을 갖는 경우가 않으면, 그것은 그것을 인쇄 아니라면, 그것을,

if hjemmesidelink: 
    print hjemmesidelink['href'] 

if hjemmesidelink: 검사 : 코드의 이러한 부분에서

:

print hjemmesidelink['href'] 

를 교체 루프를 계속할 것입니다.

내 결과 :

>>> 
http://www.albertslund.dk 
http://www.alleroed.dk 
http://www.assens.dk 
http://www.ballerup.dk 
http://www.billund.dk 
http://www.brk.dk 
http://www.brondby.dk 
http://www.broenderslev.dk 
http://www.dragoer.dk 

및 계산.

+0

놀라워. 그것은 내가 바라는 방식과 정확히 그렇게 간단하게 작동합니다. 나는 그것이 가져 오는 각 URL 사이에 NoneType 개체를 발견하는 이유에 대해 여전히 분실하고 있지만 문제가 해결되었습니다. 무리 감사! – kabp