previousSiblingGenerator
previous_elements
previous_siblings
pushTag
recursiveChildGenerator
renderContents
replaceWith
replaceWithChildren
replace_with
replace_with_children:修改elementtree元素内容
reset
select:适用于jquery和css的语法选择。
setup
string
strings
stripped_strings
tag_name_re
text
unwrap
wrap
需要注意的是,在BeautifulSoup中的方法有些有两种写法,有些是驼峰格式的写法,有些是下划线格式的写法,但是看其方法的含义是一样的,这主要是BeautifulSoup为了兼容3.x的写法。前者是3.x的写法,后者是4.x的写法,推荐使用后者,也就是下划线的方法。
根据这些方法,应该能够得到遍历、抽取、修改、规范化文档的一系列方法。大家如果能在工作中使用BeautifulSoup,一定会理解更深。
BeautifulSoup支持不同的parser,默认是Html格式解析,还有xml parser、lxml parser、html5lib parser、html.parser,这些parser都需要响应的解析器支持。
html,这个是默认的解析器
Python代码
BeautifulSoup("<a><b/></a>")
#<html><head></head><body><a><b></b></a></body></html>
xml格式解析器
Python代码
BeautifulSoup("<a><b/></a>","xml")
#<?xmlversion="1.0"encoding="utf-8"?>
#<a><b/></a>
lxml格式解析器
Python代码
BeautifulSoup("<a></p>","lxml")
#<html><body><a></a></body></html>
html5lib格式解析器
Python代码
BeautifulSoup("<a></p>","html5lib")
#<html><head></head><body><a><p></p></a></body></html>
html.parser解析器
Python代码
BeautifulSoup("<a></p>","html.parser")
#<a></a>
其中parser的区别大家看下这几个例子就知道了。
在使用BeautifulSoup解析文档的时候,会将整个文档以一颗大又密集的数据载入到内存中,如果你只是从数据结构中获得一个字符串,内存中保存一堆数据感觉就不划算了。并且如果你要获得指向某个Tag的内容,这个Tag又会指向其它的Tag对象,因此你需要保存这棵树的所有部分,也就是说整棵树都在内存中。extract方法可以破坏掉这些链接,它会将树的连接部分断开,如果你得到某个Tag,这个Tag的剩余部分会离开这棵树而被垃圾收集器捕获;当然,你也可以实现其它的功能:如文档中的某一块你本身就不关心,你可以直接把它extract出树结构,扔给垃圾收集器,优化内存使用的同时还能完成自己的功能。
正如BeautifulSoup的作者Leonard所说,写BeautifulSoup是为了帮助别人节省时间,减小工作量。一旦习惯使用上BeautifulSoup后,一些站点的内容很快就能搞定。这个就是开源的精神,将工作尽可能的自动化,减小工作量;从某个程度上来说,程序员应该是比较懒惰的,但是这种懒惰正好又促进了软件行业的进步。
导入模块时按照原始博文 总是不对,我尝试import bs4 from bs4 import beautifulsoup 就可一了
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-29971-4.html
只知道黑别人
真是两难
因为许家印帅到没天理哈哈哈