3
我發現BeautifulSoup 4出現逃避一些字符在內嵌的javascript:如何停止BeautifulSoup逃逸聯JavaScript
>>> print s
<DOCTYPE html>
<html>
<body>
<h1>Test page</h1>
<script type="text/javascript">
//<!--
if (4 > 3 && 3 < 4) {
console.log("js working");
}
//-->
</script>
</body>
</html>
>>> import bs4
>>> soup = bs4.BeautifulSoup(s, 'html5lib')
>>> print soup
<html><head></head><body><doctype html="">
<h1>Test page</h1>
<script type="text/javascript">
//<!--
if (4 > 3 && 3 < 4) {
console.log("js working");
}
//-->
</script>
</doctype></body></html>
>>> print soup.prettify()
<html>
<head>
</head>
<body>
<doctype html="">
<h1>
Test page
</h1>
<script type="text/javascript">
//<!--
if (4 > 3 && 3 < 4) {
console.log("js working");
}
//-->
</script>
</doctype>
</body>
</html>
在情況下,它在上面的丟失,關鍵的問題是:
if (4 > 3 && 3 < 4)
被轉換成:
if (4 > 3 && 3 < 4)
不工作特別好...
我試過prettify()
方法中包含的格式化程序,但沒有成功。
那麼任何想法如何阻止JavaScript被轉義?或者在輸出之前如何使用它?
請注意,它應該是'<! - //',而不是'/ <! - '。雖然對輸出沒有影響。 – 2013-04-11 10:12:28
''註釋在Javascript中實際上是無用的,因爲Javascript可以使用'',''''和'>'字符。你應該真正使用'<![CDATA ['和']]>'來恰當地'轉義'