2013-08-17 2 views
1

Beautiful Soup을 배우고 페이지에서 모든 링크를 추출하려고하는데 http://www.popsci.com ... 구문 오류가 발생합니다.내 링크 추출이 작동하지 않는 이유는 무엇입니까?

이 코드는 작동하지만 어떤 페이지에서도 사용하지 않습니다. 나는 왜 그것이 정확하게 작동하지 않는지 알아 내려고 노력하고있다. 여기

내 코드입니다 :

Traceback (most recent call last): 
    File "/root/Desktop/3.py", line 12, in <module> 
    print eachsci['href']+","+eachsci.string 
TypeError: coercing to Unicode: need string or buffer, NoneType found 
[Finished in 1.3s with exit code 1] 

답변

2

a 요소에 텍스트를 포함하지 eachsci.stringNone - 그리고 당신이 연결할 수 없습니다 : 여기

from BeautifulSoup import BeautifulSoup 
import urllib2 

url="http://www.popsci.com/" 

page=urllib2.urlopen(url) 
soup = BeautifulSoup(page.read()) 

sci=soup.findAll('a') 

for eachsci in sci: 
    print eachsci['href']+","+eachsci.string 

... 그리고 나는 오류 얻을 것 당신이하려고하는 것처럼 + 연산자를 사용하여 문자열로 None을 입력하십시오. eachsci.text가 빈 문자열 '' 포함되어 있기 때문에

당신이 eachsci.texteachsci.string를 교체하는 경우

는, 그 오류가 해결 된 a 요소가 비어 있으며 합치 아무런 문제가 없을 때 다른 문자열로 그.

그러나 a 요소에 href 속성이 없으면 다른 문제가 발생합니다.이 경우 KeyError이 표시됩니다.

키가 사전에없는 경우 기본값을 반환 할 수있는 dict.get()을 사용하여이를 해결할 수 있습니다 (a 요소가 사전 인 척하므로이 방법이 효과적입니다). 함께 모든 퍼팅

, 여기서 일하는 당신의 for 루프의 변형입니다 :

잘 정말 작동
for eachsci in sci: 
    print eachsci.get('href', '[no href found]') + "," + eachsci.text 
+0

가, 감사합니다 :) – Ninja2k

관련 문제