soup.prettify和print(soup.prettify)有什么区别?

时间:2017-10-06 02:50:20

标签: python-3.x beautifulsoup

嗨,我正在尝试用于网页刮刮的美丽汤,我正在使用jupyter笔记本。我写了soup.prettify()和print(soup.prettify()),当我使用第一个时,html没有得到漂亮的打印,但是当我用它打印时,HTML是以结构化方式打印的?可能是什么原因?

1 个答案:

答案 0 :(得分:1)

一个显示格式化字符串的repr(),另一个显示str()。前者是调试格式,因此您可以看到不可打印的字符,另一种是正常的显示格式。

例如:

>>> from bs4 import BeautifulSoup as soup
>>> s = soup('<html><body><p>blah blah blah</p></body><html>','html5lib')
>>> s
<html><head></head><body><p>blah blah blah</p></body></html>
>>> s.prettify()
'<html>\n <head>\n </head>\n <body>\n  <p>\n   blah blah blah\n  </p>\n </body>\n</html>'
>>> print(s.prettify())
<html>
 <head>
 </head>
 <body>
  <p>
   blah blah blah
  </p>
 </body>
</html>

请注意,您可以在\n版本中看到换行符为repr(),并且它周围的引号表示它是一个字符串,全部在一行上。