2013-04-27 1 views
0

BeautifulSoup로 여러 개별 페이지를 구문 분석하고 있습니다.BeautifulSoup 처리 예외

여러 페이지가 구문 분석되고 특정 사이트에서 구문 분석이 실패하는 지점에 도달합니다.

나는 다음과 같은 태그를 추출하기 위해 찾고 있어요 :

<span class="black20b">$27.99</span> 

나는 태그를 얻기 위해 다음 선택기를 사용합니다. 사실, 나는 두 개의 서로 다른 것들을 시도하고 같은 결과를 얻었다 : 나는 여러 파일에 실행에 가입하기 전에 가격의 결과를 인쇄하기로 결정

price = individual_page.find("span", {"class","black20b"}) 
price = ''.join(price.findAll(text=True)) 

를하고이 결과입니다 :

... 
Downloading: File... 
<span class="black20b">$7.79</span> 

Downloading: File... 
<span class="black20b">$27.99</span> 

Downloading: File... 
None 

마지막 선택자는 "없음"을 반환합니다. 특정 경우를 확인하면 특정 이유로 인해 스팬이 다르게 색이 지정됩니다. 즉, 해당 태그가 존재하지 않습니다.

어떻게 예외를 처리 할 수 ​​있습니까? 결과는 아무도없는 경우

+0

다른 클래스 이름의 가능성은 무엇입니까? 정규식은 아마도 여기 해결책 일 것입니다. – TerryA

+0

클래스는이 경우 적어도 black20b 또는 red13b 일 수 있습니다. 어떻게 든 그것을 처리 할 수 ​​있습니까? NONE을 반환하면 아무 것도하지 말라고 말할 수 있습니까? – Dynelight

+0

글쎄,'None's를 출력하지 않게하려면'matching = individual_page.find ("span", { "class", "black20b"}); 일치하는 경우 : price = matching' 또는 이와 비슷한 것 – TerryA

답변

2

는 함수를 호출 방지하려면 :

price = individual_page.find("span", {"class","black20b"}) 
if price: 
    print ''.join(price.findAll(text=True))