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. js两个变量互换值

    js两个变量交换值 这个问题看似很基础,但是有很多的实现方式,你知道的有多少呢,网上也有很多的方法,下面就来总结一下 中间变量(临时变量) 临时变量其实很好理解,通过一个中间变量进行交换值 var s ...

  2. day35-python之协程

    1.协程 # import time # import queue # # def consumer(name): # # print("--->ready to eat baozi. ...

  3. uboot使用脚本

    使用mkimage命令 # mkimage -A ARM -O linux -T script -C none -n "script" -d *.sh *.img # tftp x ...

  4. 在SAP Hybris commerce Storefront里购物下单

    操作过程和大家平时在网上购物没有太大差别. 选中一款心仪的产品,点击Add to cart加到购物车里: 点击Check out结帐: 生成一个购物车ID: 维护发货地址: 维护发货方式: 点击Pla ...

  5. springboot学习入门简易版五---springboot2.0整合jsp(11)

    springboot对jsp支持不友好,内部tomcat对jsp不支持,需要使用外部tomcat,且必须打包为war包. 1 创建maven项目 注意:必须为war类型,否则找不到页面. 且不要把js ...

  6. @ConfigurationProperties注解和@Value注解的区别

    都是读取配置文件属性 1.  @ConfigurationProperties(prefix = "person")读取多个属性 @Component @Configuration ...

  7. 将excel中的数据转为json格式

    ---恢复内容开始--- 用来总结工作中碰导一些错误,可以让自己在碰到相同错误的时候不至于重新走一遍.... 昨天导入数据的时候,碰到了一个问题是将一个大数组里面的每一个元素中的一些不要的去提出掉,本 ...

  8. RestTemplate对象,进行get和post简单用法

    如果只是针对纯Rest接口处理的话,我们可以使用restTemplate对象来操作,简单方便,可以不需要手写httpClient代码了. 我们看下基本的用法,如下: 1.getForObject cl ...

  9. 服务发现:Zookeeper vs etcd vs Consul_转

    转自:https://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=208173179&idx=1&sn=392c17b136c2 ...

  10. Alluxio : 开源分布式内存文件系统

    Alluxio : 开源分布式内存文件系统 Alluxio is a memory speed virtual distributed storage system.Alluxio是一个开源的基于内存 ...