2011-11-19 4 views
2

BeautifulSoup을 사용하여 아티스트 및 앨범 정보가 포함 된 웹 페이지의 콘텐츠를 구문 분석합니다. 나는이 아래 정보를 분석 한 :두 개의 닫기 태그 사이에 아름다운 스프를 사용하여 콘텐츠 구문 분석

`<span dir="ltr"><a href="unique?id=1234">Jay-Z</a> &amp; <a href="unique?id" = 321">Kanye West</a> - Watch the Throne</span>` 

앨범 이름 (이 경우에 "왕좌보기") 닫는 </span> 태그 앞에 항상이다.

단 하나의 아티스트이거나 30 명의 아티스트 일지라도 앨범에 얼마나 많은 아티스트가 포함되어 있어도 전체 <span> 요소 중 앨범 데이터를 구문 분석해야합니다.

사실 앨범 이름은 두 개의 닫는 태그 요소 사이에 있습니다.

아이디어가 있으십니까?

답변

1
>>> from BeautifulSoup import BeautifulSoup 
>>> html = '''<span dir="ltr"><a href="unique?id=1234">Jay-Z</a> &amp; 
... <a href="unique?id" = 321">Kanye West</a> - Watch the Throne</span>''' 
>>> soup = BeautifulSoup(html) 
>>> soup.span.contents[-1].strip('- ') 
u'Watch the Throne' 
+0

이것은 확실히 할 수있는 방법입니다. 정말 고맙습니다. BeautifulSoup는 놀라운 도구입니다. 거의 너무 간단합니다. 나는 나의 접근법을 지나치게 복잡하게 만든다. –

0

정확하게 이해하면 앨범 이름이 항상 span 요소 끝에 있습니다. a 태그의 마지막 종료 색인과 span 태그의 마지막 색인을 찾고 해당 앨범 정보를 포함하는 문자열을 찾을 수 있습니다.

따라서 theString.rfind("</a>")을 사용하면 시작 색인과 theString.rfind("</span>")을 찾아 종료 색인을 찾을 수 있습니다.

+0

BeautifulSoup로이 정확히 내가 필요한 정보입니다 . 나는 Python을 처음 접했고 BeautifulSoup을 사용하여 문자열에서 범위를 찾을 수 있다는 것을 잊어 버린 더러운 작업을하는 데 집중했습니다. 감사! –

+0

하지만 당신은 정말로 이것을 필요로하지 않습니다 - 당신은 이것을 해결하기 위해 BeautifulSoup 네이티브를 사용할 수 있습니다 - 더 짧고 우아해질 것이라고 믿습니다. – alonisser

+0

네 말이 맞습니다. BeautifulSoup은 이것을 쉽게 할 수 있습니다. 네가 아래에있는 사람이 나랑 똑같이 지웠어. 감사! –

0

의 다음 수프 요소 인 경우

album = s.findAll('a')[-1].nextSibling 

난 당신이 청소할 수 있습니다 생각 "-"스스로 행운을 내가 사랑은

관련 문제