#BeautifulSoup的基础使用
from bs4 import BeautifulSoup #导入bs4库
html = "<p class='stylecss'><!--index page--></p><div id='divid'><ul id='ulid'><li>Menu Title</li><li>Body Content</li></ul></div><p>Ending</p>"
soup = BeautifulSoup(html ,"lxml") #创建对象
soup.p['class'] = 'newcss' #修改p标签的class
#获取p标签的class
print(soup.p.attrs)
print(soup.p.get('class'))
print(soup.p['class']) r = soup.find_all('p') #soup.find('p')显示第一个p标签及内容, .find_all显示所有的p标签及内容
r = soup.p # 同上一行find相同
r = soup.find(class_='stylecss') #获取class为stylecss的标签及内容
r = soup.find(attrs = {'class':'stylecss'}) # 获取标签的内容文本
r = soup.p.string
# cdata = CData(r)
# print(cdata)
r = soup.div.ul.li.string
# if type(soup.p.string)==Comment:
# r = soup.p.string
# print(r) r = soup.ul.contents[1] # .contents[1]获取ul列表的第二个标签及内容 # .descendants循环获取当前页面的所有标签和标签内的内容
for child in soup.descendants:
print(child) # .strings循环获取页面中显示的所有文本内容,不包括注释内容
for string in soup.strings:
print(string) p = soup.li.parent.name # .parent获取页面中li的父级标签名 # .parents递归得到当前元素的所有父级标签节点名
li = soup.li.string
for parent in li.parents:
print(parent.name) r = soup.ul.find_parent() #获取当前节点标签的父节点及内容
r = soup.li.find_parents() #获取当前节点标签的所有父节点及内容
r = soup.ul.find_all_previous() r = soup.select('p') #获取所有的p标签及内容
r = soup.select('p')[1] #获取页面中的第二个p标签及内容
r = soup.select('#divid')
r = soup.select('.stylecss')
r = soup.select('div > ul')
r = soup.select('ul > li')[1].get_text() print(r)
Python解析器  

1、Python标准库 ,使用方法:BeautifulSoup(markup, “html.parser”) ,优势:Python的内置标准库、执行速度适中、文档容错能力强

2、lxml HTML 解析器 ,使用方法:BeautifulSoup(markup, “lxml”)     ,优势:速度快、文档容错能力强,但需要安装C语言库。

3、lxml XML 解析器 ,使用方法:BeautifulSoup(markup, [“lxml”, “xml”]) 或 BeautifulSoup(markup, “xml”) ,优势:速度快、唯一支持XML的解析器,也需要安装C语言库。

4、html5lib ,使用方法:BeautifulSoup(markup, “html5lib”) ,优势:最好的容错性、以浏览器的方式解析文档、生成HTML5格式的文档,但其速度慢,不依赖外部扩展。

最新文章

  1. SQL 数据优化之不建立索引的情况
  2. 当前不会命中断点。源代码与原始版本不同 (VS2012)
  3. SQLServer 维护脚本分享(11)部分DBCC及系统存储过程
  4. angularJs内置指令63个
  5. OAuth 的权限问题与信息隐忧
  6. Linux基本操作 2-----Linux文件系统基本结构
  7. IAR之工程配置
  8. weblogic配置修改java代码后不需要重启热部署方式
  9. 在代理中托管特殊方法的python代码实现
  10. zoj 2193 poj 2585 Window Pains
  11. sed用法小结
  12. 51nod_1119:机器人走方格 V2
  13. Docker 三剑客之 Compose
  14. SolrJ 复杂查询 高亮显示
  15. 阿里巴巴的26款超神Java开源项目!
  16. day18
  17. halcon几何变换(仿射变换)
  18. National Property CodeForces - 875C (拓扑排序)
  19. 『TensorFlow』读书笔记_进阶卷积神经网络_分类cifar10_上
  20. hadoop fsck详解

热门文章

  1. Vue 2.0 入门系列(15)学习 Vue.js 需要掌握的 es6 (2)
  2. 获取IP地址的几种方法
  3. Python中对 文件 的各种骚操作
  4. 一、SignalR使用心得
  5. 瞎JB逆
  6. 欧拉降幂公式 Super A^B mod C
  7. mybatis返回自增主键问题踩坑
  8. oracle date函数
  9. Flask【第1篇】:Flask介绍
  10. Django【第6篇】:Django之ORM单表操作(增删改查)