Python prettify格式化BeautifulSoup抓取的HTML代码|html代码格式化输出,get_text()获取文本内容

发表时间:2019-12-23

HTML格式化:

Python的BeautifulSoup:

  1. import BeautifulSoup
  2. soup = BeautifulSoup.BeautifulSoup(html)

利用这个包把html里script,style给清理了:

[script.extract() for script in soup.findAll('script')]
[style.extract() for style in soup.findAll('style')]

清理完成后,这个包有一个prettify()函数,把代码格式给搞的标准一些:

soup.prettify()

用正则表达式,把所有的HTML标签全部清理了:

reg1 = re.compile("<[^>]*>")
content = reg1.sub('',soup.prettify())

剩下的都是纯文本的文件了,通常是一行行的,把空白行给排除了

BeautifulSoup不仅仅只是可以查找,定位和修改文档内容,同样也可以用一个好的 格式进行输出显示。BeautifulSoup可以处理不同类型的输出:

  • 格式化的输出
  • 非格式化的输出


格式化输出

BeautifulSoup中有内置的方法prettfy()来实现格式化输出。比如:

Snipaste_2019-12-20_22-04-32.png

soup.prettify()自动就帮你把格式处理好了

prettify()可以用于BeautifulSoup对象也可以用于任何标签对象。


非格式化输出

可以使用str()和unicode()来进行非格式化输出。

如果我们对BeautifulSoup对象和标签对象使用str()方法,那么得到的就是一般的字符串输出样式。

我们也可以使用前篇讲到的encode()方法来指定编码格式的输出。

对BeautifulSoup对象或标签对象使用decode()方法来得到Unicode字符串。


使用get_text()

从网页中得到文本是常见的工作,BeautifulSoup提供了get_text()方法来达到目的。

如果我们只想得到BeautifulSoup对象的文本或标签对象的文本内容,我们可以使用get_text()方法。比如:

Snipaste_2019-12-20_22-10-08.png

get_text()方法返回BeautifulSoup对象或标签对象中的文本内容,其为一个Unicode字符串。但是get_text()有个问题是它同样也会返回javascript代码。去掉javascript代码的方法如下:

[x.extract() for x in soup_packtpage.find_all('script')]

这样就会用处掉所有脚本元素。

文章来源互联网,尊重作者原创,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890


Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free