学爬虫的第48天,我打开bs4的大门,然

昨天终于学会了爬取一个豆瓣网页了,按说今天该研究如何进行解析了。

但是,别急,要想解析网页,就必须得先学会传说中的bs4。

学之前其实还挺期待的,毕竟知道这东东是爬虫的必备。

然而学习的过程才发现,其实自己缺少了很多网页知识,比如html、css相关知识等。

但是现在再回去系统学网页知识工程有点大,还是先跟着这个课程学,学完看看效果再说吧。

bs4中四大对象

这东东到底是啥呢?

bs4全称是BeautifulSoup4,它将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:Tag、NavigableString、BeautifulSoup、Comment。

上面这段话,神奇的地方在于,明明每个字我都认识,但是连起来,我竟然完全看不懂。

老师说举个例子,就明白了,然后他直接用了一段baidu.html的代码。

最令人气愤的事情来了!

他竟然说这个文件在群里有!

喂,我知道你是在教本科生,但是好歹多多少少也考虑下我们这些屏幕前白嫖党的感受啊。

我们也想在PyCharm里快乐的玩耍啊!

没办法,只能老老实实看视频一点点理解吧。

一共没用几行,直接调用了parser方法,就解析出了百度首页的title。

这就是上面提到4种里面的第一个Tag,标签及内容:将找到的第一个出现的标签及其所有内容全部拿到。

NavigableString则是没有标签,只有标签里的内容(字符串)。

很明显,这个功能要比第一个要常用的多。

BeautifulSoup表示整个文档的内容,可以当做是一个Tag对象。

Comment表示注释,是一个特殊的NavigableString,输出的内容会不包含注释符号,这个使用频率是最低的。

文档的遍历

contents,可以获取Tag的所有子节点,返回一个list。

然后我们就可以用列表索引来获取它的某一个元素了。

其他还有children(获取Tag的所有子节点)、descendants(获取Tag的所有子孙节点)、父节点、兄弟节点等。

完全是一种子子孙孙无穷尽也的即时感。

我都快要怀疑Python是愚公研究出来的了。

不过这东东了解即可,因为更多、更准确的功能,还得看搜索功能了。

文档的搜索

搜索比遍历更为常用。

方法1:find_all,字符串过滤,会查找与字符串完全匹配的内容。

下图就是把所有a标签包含的内容全都获取到了。

可以配合使用:正则表达式搜索,使用search()方法来匹配搜索。

下图就是将所有包含“a”字母的标签都会显示出来。

这个东东听过好多次了,老师也把他吹嘘的够呛,期待后面对这个东东的完整学习。

还可以配合使用:传入一个函数(方法),根据函数的要求来搜索,这个方法了解即可,我估计平时应该也很少会用到。

方法2:kwargs参数,可以给定参数进行搜索。

这里虽然仍然使用的是find_all,但是给定的不是规则,而是参数。

方法3:text参数,搜索文本参数。

下图是使用正则表达式,来查找包含特定文本的内容(标签里的字符串)。

方法4:limit参数,可以对得到的信息限定个数。

css选择器:可以通过标签查找,也可以按照id、类名、属性等进行查找。

这次学的内容有点多,尤其是各种搜索方法,一下子全都涌入大脑,对我实行连续暴击。

不过关了视频后,仔细想想,我其实也没必要把所有方法全部掌握的,就掌握自己好用的、自己熟悉的就好了,比如find_all、css选择器这俩,我估计没准就够用了。

不知道这想法对不对呢?




转载请注明:http://www.aierlanlan.com/cyrz/2851.html