4

私はhtmlを解析するためにbeautifulsoupを使用しようとしていますが、インラインスクリプトタグのページにアクセスするたびに、beautifulsoupはコンテンツをエンコードしますが、最後にデコードしません。

これは私が使用するコードです:

from bs4 import BeautifulSoup

if __name__ == '__main__':

    htmlData = '<html> <head> <script type="text/javascript"> console.log("< < not able to write these & also these >> "); </script> </head> <body> <div> start of div </div> </body> </html>'
    soup = BeautifulSoup(htmlData)
    #... using BeautifulSoup ...
    print(soup.prettify() )

私はこの出力が欲しい:

<html>
 <head>
  <script type="text/javascript">
   console.log("< < not able to write these & also these >> ");
  </script>
 </head>
 <body>
  <div>
   start of div
  </div>
 </body>
</html>

しかし、私はこの出力を得ます:

<html>
 <head>
  <script type="text/javascript">
   console.log("&lt; &lt; not able to write these &amp; also these &gt;&gt; ");
  </script>
 </head>
 <body>
  <div>
   start of div
  </div>
 </body>
</html>
4

2 に答える 2

1

lxmlを試してみてください:

import lxml.html as LH

if __name__ == '__main__':
    htmlData = '<html> <head> <script type="text/javascript"> console.log("< < not able to write these & also these >> "); </script> </head> <body> <div> start of div </div> </body> </html>'
    doc = LH.fromstring(htmlData)
    print(LH.tostring(doc, pretty_print = True))

収量

<html>
<head><script type="text/javascript"> console.log("< < not able to write these & also these >> "); </script></head>
<body> <div> start of div </div> </body>
</html>
于 2012-12-02T18:37:19.080 に答える
-1

次のようなことができます。

htmlCodes = (
('&', '&amp;'),
('<', '&lt;'),
('>', '&gt;'),
('"', '&quot;'),
("'", '&#39;'),
)

for i in htmlCodes:
    soup.prettify().replace(i[1], i[0])
于 2012-12-02T18:23:28.653 に答える