from bs4 import BeautifulSoup

 html = """
<html><head><title>This is a python demo page</title></head>
<body>
<p class="title"><a>The demo python introduces several python courses.</a></p>
<p class="course">Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:
<a href="http://www.icourse163.org/course/BIT-268001" class="py1" id="link1"><b class="element">Basic Python</b></a> and <a href="http://www.icourse163.org/course/BIT-1001870001" class="py2" id="link2">Advanced Python</a>.</p>
</body></html>
""" soup = BeautifulSoup(html,'lxml')
#基本使用
# print(soup.prettify())
# print(soup.title.string) #标签选择器
#选择元素
# print(soup.title)
# print(type(soup.title))
# print(soup.head)
# print(soup.p)#返回第一个Tag
#
# #获取名称
#
# print(soup.title.name)
#
# #获取属性
# print(soup.a.attrs['href'])
# print(soup.a['href'])
#
# #获取内容
# print(soup.p.string)
#
# #嵌套选择
# print(soup.head.title.string) #子节点和子孙节点
# print(soup.body.contents)#获取子节点,返回列表类型
# print(soup.body.children) #返回迭代器类型
# for i,child in enumerate(soup.body.children):
# print(i,child) # print(soup.body.descendants) #子孙节点,返回迭代类型
# for i,child in enumerate(soup.body.descendants):
# print(i,child) #父节点和祖先节点
# print(soup.a.parent)
#
# print(list(enumerate(soup.a.parents))) #兄弟节点
# print(list(enumerate(soup.a.next_siblings)))
# print(list(enumerate(soup.a.previous_siblings))) #标准选择器
#find_all(name,attrs,recursive,text,**kwargs) 可根据标签名、属性、内容查找文档
#name
# print(soup.find_all('p'))
# print(type(soup.find_all('p')[0]))
# for i in soup.find_all('p'):
# print(i.find_all('a')) #嵌套选择 # #attrs
# print(soup.find_all(attrs={'href':"http://www.icourse163.org/course/BIT-268001"}))
# print(soup.find_all(attrs={'id':'link1'}))
#
# print(soup.find_all(id='link1'))
# print(soup.find_all(class_='py1'))
#
# #text查找内容
# print(soup.find_all(text='This is a python demo page'))#用来做内容匹配
#
# #find(name,attrs,recursive,text,**kwargs)
# #用法一样,find只是返回单个元素,find_all返回所有元素
# print(soup.find('p',attrs={'class':'course'}))
# print(type(soup.find('p'))) #CSS选择器,返回列表
#通过select()直接传入CSS选择器即可完成选择
#选择class属性就直接用'.'代替,例:class=‘course’--》.course;#代表id
# print(soup.select('.course .py1'))
# print(soup.select('p a'))#嵌套选择
# print(soup.select('#link1 .element'))
# print(type(soup.select('p')[0]))
#
# #嵌套选择
# for p in soup.select('p'):
# print(p.select('a'))
# #获取属性
for p in soup.select('p'):
print(p['class'])
print(p.attrs['class']) #获取内容
for p in soup.select('p'):
print(p.get_text())

BS4库详解的更多相关文章

  1. Lua的协程和协程库详解

    我们首先介绍一下什么是协程.然后详细介绍一下coroutine库,然后介绍一下协程的简单用法,最后介绍一下协程的复杂用法. 一.协程是什么? (1)线程 首先复习一下多线程.我们都知道线程——Thre ...

  2. Python--urllib3库详解1

    Python--urllib3库详解1 Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库,许多Python的原生系统已经开始使用urllib3.Urllib3提供了很多pyt ...

  3. Struts标签库详解【3】

    struts2标签库详解 要在jsp中使用Struts2的标志,先要指明标志的引入.通过jsp的代码的顶部加入以下的代码: <%@taglib prefix="s" uri= ...

  4. STM32固件库详解

    STM32固件库详解   emouse原创文章,转载请注明出处http://www.cnblogs.com/emouse/ 应部分网友要求,最新加入固件库以及开发环境使用入门视频教程,同时提供例程模板 ...

  5. MySQL5.6的4个自带库详解

    MySQL5.6的4个自带库详解 1.information_schema详细介绍: information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数 ...

  6. php中的PDO函数库详解

    PHP中的PDO函数库详解 PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,P ...

  7. STM32 HAL库详解 及 手动移植

    源: STM32 HAL库详解 及 手动移植

  8. 爬虫入门之urllib库详解(二)

    爬虫入门之urllib库详解(二) 1 urllib模块 urllib模块是一个运用于URL的包 urllib.request用于访问和读取URLS urllib.error包括了所有urllib.r ...

  9. Python爬虫系列-Urllib库详解

    Urllib库详解 Python内置的Http请求库: * urllib.request 请求模块 * urllib.error 异常处理模块 * urllib.parse url解析模块 * url ...

随机推荐

  1. JavaScript_01-script

    编译和解释 var a = 0; console.log(a); var b = "abc"; 编译: 一次性把代码转换成 CPU 可以看懂的语言,一行一行执行: 解释:一行一行解 ...

  2. linux时间格式

    date "+%Y-%m-%d %H:%M:%S" 2019-10-27 12:02:33

  3. 【JUC】3.ReentrantLock

    ReentrantLock实现Lock接口,所以先看下Lock接口: public interface Lock { // 获得锁 void lock(); // 获得锁 void unlock(); ...

  4. mysql学习之基础篇02

    我们来说一下表的增删改查的基本语法: 首先建立一个简单的薪资表: create table salary(id int primary key auto_increment,sname varchar ...

  5. POST请求接口实列

    通过响应状态来判断是否读取数据与抛出异常,然后通过判断获取的字节数去读取数据或抛出异常 /** * 发送HttpPost请求 * @param strURL * 服务地址 * @param param ...

  6. ubuntu---对比工具Meld

    Beyond Compare是商业软件,下载地址:http://www.scootersoftware.com/download.php.下载完直接运行或者通过dpkg安装即可. 其实Linux下文本 ...

  7. Django之路——8 cookie 和sessions

    会话跟踪技术 1 什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10 ...

  8. 0023SpringMVC自定义类型转换器

    页面录入的字符串:2019/12/05可以映射到实体的日期属性上,但是如果是录入2019-12-05就会报错400 bad request,想要以2019-12-05日期格式的方式映射到实体的日期属性 ...

  9. Scikit-learn库

    1 简介 对Python语言有所了解的科研人员可能都知道SciPy——一个开源的基于Python的科学计算工具包.基于SciPy,目前开发者们针对不同的应用领域已经发展出了为数众多的分支版本,它们被统 ...

  10. Spring源码窥探之:Condition

    采用注解的方式来注入bean 1. 编写config类 /** * @author 70KG * @Title: ConditionConfig * @Description: * @date 201 ...