爬虫模块BeautifulSoup
Posted helenMemery
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫模块BeautifulSoup相关的知识,希望对你有一定的参考价值。
中文文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#
1.1 安装BeautifulSoup模块和解析器
1) 安装BeautifulSoup
pip install beautifulsoup4
2) 安装解析器
pip install lxml
pip install html5lib
1.2 对象种类
- Tag : 标签对象,如:<p class="title"><b>yoyoketang</b></p>,这就是一个标签
- NavigableString :字符对象,如:这里是我的微信公众号:yoyoketang
- BeautifulSoup :就是整个html对象
- Comment :注释对象,如:!-- for HTML5 --,它其实就是一个特殊NavigableString
1.3 常用方法
# coding:utf-8 __author__ = \'Helen\' \'\'\' description:爬虫模块BeautifulSoup学习 \'\'\' import requests from bs4 import BeautifulSoup r = requests.get("https://www.baidu.com/") soup = BeautifulSoup(r.content,\'html5lib\') print soup.a # 根据tab名输出,只输出第一个 print soup.find(\'a\') # 同上 print soup.find_all(\'a\') # 输出所有a元素 # 找出对应的tag,再根据元素属性找内容 print soup.find_all(\'a\',{\'href\':\'https://www.hao123.com\',\'name\':\'tj_trhao123\'}) # .contents(tag对象contents可以获取所有的子节点,返回的是list,获取该元素的直接子节点) print soup.find(\'a\').contents[0] # 输出第一个节点 print soup.find(\'div\',id=\'u1\').contents[1] # 输出第二个节点 # .children(点children这个生成的是list对象,跟上面的点contents功能一样,但是不能通过下标读,只能for循环读) for i in soup.find(\'div\',id=\'u1\').children: print i # .descendants(获取所有的子孙节点) for i in soup.find(class_=\'head_wrapper\').descendants: print i
以上是关于爬虫模块BeautifulSoup的主要内容,如果未能解决你的问题,请参考以下文章