BeautifulSoup库的使用
来源:互联网 发布:匡恩网络 招聘 编辑:程序博客网 时间:2024/06/06 23:58
- 灵活方便的网页解析库,处理高效,支持多种解析器
- 是python的一个库,通过解析文档为用户提供需要抓取的数据
- 自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。
- 不用编写复杂的正则表达式提取网页信息(代替正则)
安装:
pip35 install beautifulsoup4pip35 install lxml# lxml解析器更加强大,速度更快pip35 install html5lib
创建 Beautiful Soup 对象
soup = BeautifulSoup(html)# 用本地HTML文件来创建对象# soup = BeautifulSoup(open('demo.html'))<!--打印soup对象的内容-->print(soup.prettify())<!--选择了title标签,将内容打印出来-->print(soup.title.string)
常用的解析方法
标签选择器
选择元素
soup = BeautifulSoup(html, 'lxml')<!--print(soup.prettify())-->print(soup.title.string)print(soup.title)# 输出第一个返回结果<!--获取名称-->print(soup.p.string)
输出:
Title<title>Title</title>change the world by program
获取属性
soup = BeautifulSoup(html, 'lxml')print(soup.p.attrs['name'])print(soup.p['name'])
输出:
aaaaaa
获取子节点
<!--获取p标签的子节点--><p class="story" name="aaa">change the world by program <a>aaaaaaaaaaaaaaaaaaa</a> <a>bbbbbbbbbbbbbbbbb</a> <a>ccccccccccccccccc</a></p><!--列表类型-->soup = BeautifulSoup(html, 'lxml')print(soup.p.contents)
输出:
['change the world by program\n ', <a>aaaaaaaaaaaaaaaaaaa</a>, '\n', <a>bbbbbbbbbbbbbbbbb</a>, '\n', <a>ccccccccccccccccc</a>, '\n']
返回迭代器类型:
soup = BeautifulSoup(html, 'lxml')print(soup.p.children)for i, child in enumerate(soup.p.children): print(i, child)
输出:
0 change the world by program1 <a>aaaaaaaaaaaaaaaaaaa</a>2 3 <a>bbbbbbbbbbbbbbbbb</a>4 5 <a>ccccccccccccccccc</a>6
子孙节点
soup = BeautifulSoup(html, 'lxml')print(soup.p.descendants)for i, child in enumerate(soup.p.descendants): print(i, child)
输出:
0 change the world by program1 <a>aaaaaaaaaaaaaaaaaaa</a>2 aaaaaaaaaaaaaaaaaaa3 4 <a>bbbbbbbbbbbbbbbbb</a>5 bbbbbbbbbbbbbbbbb6 7 <a>ccccccccccccccccc</a>8 ccccccccccccccccc9
父节点和祖先节点
- 父节点:parent
- 祖先节点: parents
- 兄弟节点:next_siblings
- previous_siblings
标准选择器
html = '''<div class="panel"> <ul class="list" id="list1" name="elements"> <li class="element">aaa</li> <li class="element">bbb</li> <li class="element">ccc</li> </ul> <ul class="list list-small" id="list2"> <li class="element">111</li> <li class="element">222</li> </ul></div>'''
name
soup = BeautifulSoup(html, 'lxml')<!--注:ul必须与标签名一致-->for ul in soup.find_all('ul'): print(ul.find_all('li'))
输出:
[<li class="element">aaa</li>, <li class="element">bbb</li>, <li class="element">ccc</li>][<li class="element">111</li>, <li class="element">222</li>]
attr
通过属性名获取元素:
print(soup.find_all(attrs={'id': 'list1'}))print(soup.find_all(attrs={'name': 'elements'}))
输出:
[<ul class="list" id="list1" name="elements"><li class="element">aaa</li><li class="element">bbb</li><li class="element">ccc</li></ul>]
也可以直接获取:
print(soup.find_all(id='list1'))print(soup.find_all(class_='element'))
text
print(soup.find_all(text='111'))
find
返回单个元素,find_all返回所有元素
css选择器
print(soup.select('.panel #list1'))<!--输出第一个ul-->
获取属性
for ul in soup.select('ul'): print(ul['id']) print(ul.attrs['id'])
获取内容
for li in soup.select('li'): print(li.get_text())
输出:
aaabbbccc111222
阅读全文
0 0
- BeautifulSoup库的使用
- Python库beautifulsoup的安装与使用
- Python3的解析库BeautifulSoup如何使用?
- BeautifulSoup的安装使用
- beautifulSoup的使用
- BeautifulSoup的使用
- BeautifulSoup库的安装
- beautifulsoup的windows安装&使用
- BeautifulSoup的安装和使用
- BeautifulSoup模块的简单使用
- BeautifulSoup的使用学习笔记
- 使用beautifulsoup
- BeautifulSoup使用
- BeautifulSoup使用
- BeautifulSoup使用
- Python 下的BeautifulSoup 库
- BeautifulSoup库的用法详解
- python BeautifulSoup 的安装和使用
- MyBatis的逆向工程
- ES6-字符串扩展-标签模板
- 在Windows下为PHP5.6安装redis扩展
- microsoft edge地址栏无法复制死机解决方法
- 文件上传
- BeautifulSoup库的使用
- dao层不写实现类容易出现的错误及解决方法
- JavaWeb从入门到放弃(1)-配置环境
- MyEclipse中jsp默认编码格式改变
- 一步一步带你安装史上最难安装的 vim 插件 —— YouCompleteMe
- c语言下的约瑟夫环
- android+项目中常见的错误1
- 【BZOJ5020】【THUWC2017】在美妙的数学王国中畅游 LCT 泰勒展开
- 【bzoj1217】[HNOI2003]消防局的设立 贪心