2009-11-14 3 views
1

나는 BeautifulSoup (3.1.0.1)에서 html 내부 태그를 생성하는 많은 자바 스크립트가있는 html 페이지를 구문 분석하려고했습니다. 한 예 조각은 다음과 같습니다BeautifulSoup가 스크립트 태그 내에서 내용을 무시하게 만들기

<html><head><body><div> 
<script type='text/javascript'> 

if(ii > 0) { 
html += '<span id="hoverMenuPosSepId" class="hoverMenuPosSep">|</span>' 
} 
html += 
'<div class="hoverMenuPos" id="hoverMenuPosId" onMouseOver=\"menuOver_3821();\" ' + 
'onMouseOut=\"menuOut_3821();\">'; 
if (children[ii].uri == location.pathname) { 
html += '<a class="hiHover" href="' + children[ii].uri + '" ' + onClick + '>'; 
} else { 
html += '<a class="hover" href="' + children[ii].uri + '" ' + onClick + '>'; 
} 
html += children[ii].name + '</a></div>'; 
} 
}   
hp = document.getElementById("hoverpopup_3821"); 
hp.style.top = (parseInt(hoveritem.offsetTop) + parseInt(hoveritem.offsetHeight)) + "px"; 
hp.style.visibility = "Visible"; 
hp.innerHTML = html; 
} 
return false; 
} 
function menuOut_3821() { 
timeOn_3821 = setTimeout("showSelected_3821()", 1000)    
} 
var timeOn_3821 = null; 
function menuOver_3821() { 
clearTimeout(timeOn_3821) 
} 
function showSelected_3821() { 
showChildrenMenu_3821( 
document.getElementById("flatMenuItemAnchor" + selectedPageId), selectedPageId); 
} 
</script> 
</body> 
</html> 
BeautifulSoup로이 처리 할 수있을 것 같지 않고 onMouseover와 주위에 "잘못된 시작 태그"에 대해 complaning됩니다

= ** \ "** menuOver_3821(); \ "입니다. 스크립트 블록 내에서 javascript에 의해 생성 된 XML 구문 분석을 시도하는 것 같습니다!?

BeautifulSoup을 만드는 방법에 대한 아이디어는 스크립트 태그 콘텐츠를 무시합니까?

lxml을 사용하는 다른 제안을 보았지만 Google AppEngine에서 실행해야하므로 사용할 수 없습니다.

+1

아마도이 버그가 발생했습니다. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=516824 – unutbu

+0

포인터를 보내 주셔서 감사합니다! BeautifulSoup 3.0.7a로 되 돌리면 문제가 해결되고 3.1.0.1에서 숨 막혀있는 다른 dodgy html 비트를 처리 할 수있었습니다. – alphageek

답변

0

내가 전에 이런 종류의 문제에 직면하고, 내가 평소하는 것은 --><!--</script><script의 모든 항목을 바꾸입니다했습니다. 그러면 모든 <script></script> 태그가 주석 처리됩니다.

+0

좋은 점은 있지만 스크립트 태그 자체에 alphageek

+0

이 포함되어 있으면 작동하지 않습니다. 나는 태그가 나올 때까지> -> 제거하는 플래그를 설정한다는 등의 온 전성 검사를 구현할 수 있다고 가정합니다. – blwy10

1

BeautifulSoup으로 되 돌리면 3.0.7a이이 문제와 3.1.0.1에서 많은 다른 html 기묘를 해결했습니다.

0

그래도 효과가 있지만, BeautifulSoup의 요점은 끔찍한 부조리가 있더라도 그에게 던지는 태그 수프를 파싱하는 것입니다.

+0

BeautifulSoup가'