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. canvas教程(二) 绘制直线

    经过 canvas 教程(一) 简介 我们知道了 canvas 的一些基本情况 而本次是给大家带来直线的绘制 canvas 中,基本图形有两种,一种是直线,还有一种是曲线 但是无论是直线还是曲线,我们 ...

  2. js两个变量互换值

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

  3. org.apache.commons.beanutils.ConversionException: No value specified解决办法

    转自:https://www.cnblogs.com/linjiqin/archive/2011/07/21/2112628.html 当用到了java.sql.Date时间等非内置对象时,如果对象为 ...

  4. Python日记(二):Python之禅

    The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Si ...

  5. systemctl 常用操作

    以samba为列 systemctl start smb       #启动smb服务 systemctl restart smb   #重启smb服务 systemctl stop smb      ...

  6. c++第五次作业

    运算符重载 一.运算符重载基本规则 1.运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同的行为. 2.一般来讲,重载的功能应当与原有功能相似,不能改变原运算符的操作 ...

  7. Codes: MODERN ROBOTICS Ch.4_基于PoE的正运动学代码实现

    %%1 基于PoE space form 的正运动学求解 % 输入M矩阵.螺旋轴列表Slist(column vector).关节角向量qlist(column vector),输出齐次变换矩阵T f ...

  8. 初识python多线程

    目录 GIL锁 Thread类构造方法 Lock类.Rlock类 参考: python3多线程--官方教程中文版 python多线程-1 python多线程-2.1 python多线程-2.2 pyt ...

  9. linux网络编程之socket编程(一)

    今天开始,继续来学习linux编程,这次主要是研究下linux下的网络编程,而网络编程中最基本的需从socket编程开始,下面正式开始学习: 什么是socket: 在学习套接口之前,先要回顾一下Tcp ...

  10. codevs 1341 与3和5无关的数

    题目描述 Description 有一正整数a,如果它能被x整除,或者它的十进制表示法中某位上的数字为x,则称a与x相关.现求所有小于等于n的与3或5无关的正整数的平方和. 输入描述 Input De ...