2013-09-04 4 views
2

다음 html 코드에서 <p> 개의 태그를 검색하려고합니다. 여기의 일부입니다아름다운 스프 결과가 누락되었습니다

<td class="eelantext"> 
    <a class="fBlackLink"></a> 
    <center></center> 
    <span> … </span><br></br> 
    <table width="402" vspace="5" cellspacing="0" cellpadding="3" 
     border="0" bgcolor="#ffffff" align="Left"> 
    <tbody> … </tbody></table> 
     <!--edstart--> 
    <p> … </p> 
    <p> … </p> 
    <p> … </p> 
    <p> … </p> 
    <p> … </p> 
</td> 

당신은 here

내 파이썬 코드는 다음

soup = BeautifulSoup(page) 
div = soup.find('td', attrs={'class': 'eelantext'}) 
print div 
text = div.find_all('p') 

하지만 텍스트 변수가 비어 있고 웹 페이지를 찾을 수 있습니다 나는 DIV 변수를 인쇄하는 경우 , 나는 <p> 태그를 제외하고는 위와 똑같은 HTML을 가지고있다.

답변

9

BeautifulSoup는 different parsers to handle HTML input을 사용할 수 있습니다. 여기에 입력 된 HTML은 약간 훼손되어 있으며, 기본값 인 HTMLParser 파서는이를 잘 처리하지 못합니다.

사용을 대신 html5lib parser :

>>> len(BeautifulSoup(r.text, 'html').find('td', attrs={'class': 'eelantext'}).find_all('p')) 
0 
>>> len(BeautifulSoup(r.text, 'lxml').find('td', attrs={'class': 'eelantext'}).find_all('p')) 
0 
>>> len(BeautifulSoup(r.text, 'html5lib').find('td', attrs={'class': 'eelantext'}).find_all('p')) 
22 
+0

감사합니다. 그게 완벽하게 작동합니다. 먼저 html5lib을 설치해야했지만 지금은 작동합니다. :) – Tasos

관련 문제