(五)BeautifulSoup库
来源:互联网 发布:基本数据分析方法 编辑:程序博客网 时间:2024/05/21 14:41
利用它就不用编写正则表达式也能方便的实现网页信息的抓取
soup = BeautifulSoup(html,'lxml')print(soup.prettify())print(soup.title)print(soup.title.name)print(soup.title.string)print(soup.title.parent.name)print(soup.p)print(soup.p["class"])print(soup.a)print(soup.find_all('a'))print(soup.find(id='link3'))
通过这种soup.标签名 就可以获得这个标签的内容当我们通过soup.title.name的时候就可以获得该title标签的名称,即title
print(soup.p.attrs[‘name’])
print(soup.p[‘name’])
上面两种方式都可以获取p标签的name属性值
print(soup.p.string)
结果就可以获取第一个p标签的内容
直接可以通过下面嵌套的方式获取
print(soup.head.title.string)
子节点和子孙节点
contents的使用
from bs4 import BeautifulSoupsoup = BeautifulSoup(html,'lxml')print(soup.p.contents)
结果是将p标签下的所有子标签存入到了一个列表中
通过下面的方式也可以获取p标签下的所有子节点内容和通过contents获取的结果是一样的,但是不同的地方是soup.p.children是一个迭代对象,而不是列表,只能通过循环的方式获取素有的信息
print(soup.p.children)for i,child in enumerate(soup.p.children): print(i,child)
通过contents以及children都是获取子节点,如果想要获取子孙节点可以通过descendants
print(soup.descendants)同时这种获取的结果也是一个迭代器
通过soup.a.parent就可以获取父节点的信息
通过list(enumerate(soup.a.parents))可以获取祖先节点,这个方法返回的结果是一个列表,会分别将a标签的父节点的信息存放到列表中,以及父节点的父节点也放到列表中
soup.a.next_siblings 获取后面的兄弟节点
soup.a.previous_siblings 获取前面的兄弟节点
soup.a.next_sibling 获取下一个兄弟标签
souo.a.previous_sinbling 获取上一个兄弟标签
find_all
find_all(name,attrs,recursive,text,**kwargs)
可以根据标签名,属性,内容查找文档
from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'lxml')print(soup.find_all('ul'))print(type(soup.find_all('ul')[0]))
结果返回的是一个列表的方式
同时可以针对结果再次find_all,从而获取所有的li标签信息
for ul in soup.find_all('ul'): print(ul.find_all('li'))
from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'lxml')print(soup.find_all(attrs={'id': 'list-1'}))print(soup.find_all(attrs={'name': 'elements'}))
attrs可以传入字典的方式来查找标签,但是这里有个特殊的就是class,因为class在python中是特殊的字段,所以如果想要查找class相关的可以更改attrs={‘class_’:’element’}或者soup.find_all(”,{“class”:”element}),特殊的标签属性可以不写attrs,例如id
from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'lxml')print(soup.find_all(text='Foo'))
结果返回的是查到的所有的text=’Foo’的文本
find
find(name,attrs,recursive,text,**kwargs)
find返回的匹配结果的第一个元素
find_parents()返回所有祖先节点,find_parent()返回直接父节点。
find_next_siblings()返回后面所有兄弟节点,find_next_sibling()返回后面第一个兄弟节点。
find_previous_siblings()返回前面所有兄弟节点,find_previous_sibling()返回前面第一个兄弟节点。
find_all_next()返回节点后所有符合条件的节点, find_next()返回第一个符合条件的节点
find_all_previous()返回节点后所有符合条件的节点, find_previous()返回第一个符合条件的节点
标签1,标签2 找到所有的标签1和标签2
标签1 标签2 找到标签1内部的所有的标签2
[attr] 可以通过这种方法找到具有某个属性的所有标签
通过select()直接传入CSS选择器就可以完成选择
from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'lxml')print(soup.select('.panel .panel-heading'))print(soup.select('ul li'))print(soup.select('#list-2 .element'))print(type(soup.select('ul')[0]))
通过get_text()就可以获取文本内容
from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'lxml')for li in soup.select('li'): print(li.get_text())
获取属性
from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'lxml')for ul in soup.select('ul'): print(ul['id']) print(ul.attrs['id'])
- (五)BeautifulSoup库
- 五 . BeautifulSoup库详解及运用
- Python爬虫包 BeautifulSoup 学习(五) 实例
- Python爬虫入门(三)BeautifulSoup库
- python BeautifulSoup 库 笔记
- python BeautifulSoup 库安装
- Python BeautifulSoup库
- BeautifulSoup库入门
- Python BeautifulSoup库 API
- BeautifulSoup 库学习笔记
- BeautifulSoup库的安装
- BeautifulSoup库的使用
- BeautifulSoup
- BeautifulSoup
- BeautifulSoup
- beautifulsoup
- BeautifulSoup
- BeautifulSoup
- c++中的匿名对象的去留问题和深拷贝浅拷贝
- LeetCode 60. Permutation Sequence
- Qt事件处理(五)——定时器
- CSS 基础语法
- leetcode 456. 132 Pattern 一个很棒的利用stack的做法
- (五)BeautifulSoup库
- 【模板】费用流
- [挖坑--截止日期2017-12-30]---Image Inpainting相关的论文解读
- ASCII对照表
- 安装OpenCV-3.2.0
- 深入理解java中的反射机制
- 超市商品管理系统(课程设计)
- CentOS7设置root用户登陆ftp
- 蓝桥杯 ALGO-53 算法训练 最小乘积(基本型)