博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BeautifulSoup
阅读量:7043 次
发布时间:2019-06-28

本文共 2703 字,大约阅读时间需要 9 分钟。

1、BeautifuSoup 是什么

灵活又方便的网页解析库,处理高效,支持多种解析器,利用它不用编写正则表达式既可方便地实现网页信息的提取。

 安装:

  pip3 install beautifulsoup4

用法讲解

 

解析器   使用方法 优势 劣势
python标准库 BeautifulSoup('带解析代码','html.parser') python内置标准库 容错内里差
lxml HTML解析器 BeautilfulSoup('带解析代码','lxml') 速度快、文档容错能力强 需要安装C语言库
lxml XML解析库  BeautifulSoup('带解析代码','xml') 速度快、唯一支持xml的解析器 需要安装C语言库
html5lib BeautifulSout('带解析代码','html5lib') 最好的容错性、以浏览器的方式解析文档,生成html5格式的文档 速度快、不依赖外部扩展

 

 

 

 

 

 

 

来个栗子

from bs4 import BeautifulSouphtml ="""
"""soup = BeautifulSoup(html,'lxml')print(soup.prettify()) """格式化代码"""print(soup.li.string)

 

2、标签选择器

  1、选择元素

  

from bs4 import BeautifulSouphtml ="""
"""soup = BeautifulSoup(html,'lxml')print(soup.title)print(soup.header)print(soup.li)

 

输出:

如果加了.string

print(soup.title.string)print(soup.header.string)print(soup.li.string)

 

 输出就是具体的文字

标题

大脑袋
博客园

 

2、获取名称

soup = BeautifulSoup(html,'lxml')print(soup.title.name) 输出: title

3、获取属性

soup = BeautifulSoup(html,'lxml')print(soup.li.attrs['name'])  //第一种方式print(soup.li['name'])     //第二种方式 输出: dromouse dromuser1

4、嵌套选择

soup = BeautifulSoup(html,'lxml') print(soup.li.attrs['name']) print(soup.ul.li.a.string) 输出: 博客园

5、子节点和子孙节点

soup = BeautifulSoup(html,'lxml') print(soup.li.attrs['name']) print(soup.ul.contents)  //输出这个标签内部的全部标签及内容 输出: ['\n', 标题, '\n', 
大脑袋
, '....订阅

 第二获取子节点:迭代器

soup = BeautifulSoup(html,'lxml') print(soup.ul.children) for i,child in enumerate(soup.ul.children):     print(i,child)

 输出:

 

   第三 获取子节点: 子孙节点(迭代器)

soup = BeautifulSoup(html,'lxml') print(soup.ul.descendants) for i,child in enumerate(soup.ul.descendants):     print(i,child) 输出:

 

  6、find_all
soup = BeautifulSoup(html,'lxml') for ul in soup.find_all('ul'):     print(ul.find_all('li')) 查找出所有ul下面的li标签及其子标签
    

   7、attrs

soup = BeautifulSoup(html,'lxml') print(soup.find_all(attrs={"id":"blog_nav_admin"})) print(soup.find_all(attrs={"class":"aHeaderXML"}))
    输出:     

     或者

print(soup.find_all(id="blog_nav_admin")) print(soup.find_all(class_="aHeaderXML"))  更加简单
  8、find 是返回单个结果。      9、find_parents() 和 find_parent()  三、CSS 选择器      soup = BeautifulSoup(html,'lxml')

  print(soup.select('.panal .panel-heading'))

  print(soup.select('ul li'))

  print(soup.select('#list-2 .element'))

  print(soup.select('ul')[0])

 

 获取属性

soup = BeautifulSoup(html,'lxml') for ul in soup.select('ul'):     print(ul['id'])     print(ul.attrs['id'])

 

 获取内容

soup = BeautifulSoup(html,'lxml') for ul in soup.select('li'):     print(ul.get_text()) 输出:

博客园

闪存
首页
新随笔
联系
管理
订阅

 

 

 

 

 

 

 

 

 

 

 

 

 

 
你可能感兴趣的文章
《机器学习与数据科学(基于R的统计学习方法)》——1.9 数据集
查看>>
【重磅】Facebook开源机器视觉工具,从像素点中发现规律
查看>>
《敏捷软件开发:原则、模式与实践(C#版.修订版)》一2.3 参考文献
查看>>
Oracle 数据库灾难性环境下恢复实例
查看>>
《D3.js数据可视化实战手册》——导读
查看>>
《Ember.js实战》——第1章 发力雄心勃勃的Web应用 1.1 Ember.js适用场景
查看>>
《循序渐进学Spark》一第2章
查看>>
使用Clonezilla对硬盘进行镜像和克隆
查看>>
《Spring MVC学习指南(第2版)》——2.4 模型2之Filter分发器
查看>>
移动App性能测评与优化1.1 新手入门
查看>>
《JavaScript框架设计》——2.2 加载器所在路径的探知
查看>>
《iOS组件与框架——iOS SDK高级特性剖析》——第6章,第6.5节小结
查看>>
《ANTLR 4权威指南 》一第3章 入门的ANTLR项目
查看>>
该用什么心态,去面对不喜欢的工作?
查看>>
《Docker生产环境实践指南》——2.4 配置管理
查看>>
《R绘图系统(第2版)》一2.2 plot()函数
查看>>
创业18般武器之ICP许可证过审秘籍
查看>>
利用APT实现Android编译时注解
查看>>
spring 4.0.2.RELEASE 自动化装配
查看>>
DIY物联网应用 3-控制继电器
查看>>