BS4库详解
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库详解的更多相关文章
- Lua的协程和协程库详解
我们首先介绍一下什么是协程.然后详细介绍一下coroutine库,然后介绍一下协程的简单用法,最后介绍一下协程的复杂用法. 一.协程是什么? (1)线程 首先复习一下多线程.我们都知道线程——Thre ...
- Python--urllib3库详解1
Python--urllib3库详解1 Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库,许多Python的原生系统已经开始使用urllib3.Urllib3提供了很多pyt ...
- Struts标签库详解【3】
struts2标签库详解 要在jsp中使用Struts2的标志,先要指明标志的引入.通过jsp的代码的顶部加入以下的代码: <%@taglib prefix="s" uri= ...
- STM32固件库详解
STM32固件库详解 emouse原创文章,转载请注明出处http://www.cnblogs.com/emouse/ 应部分网友要求,最新加入固件库以及开发环境使用入门视频教程,同时提供例程模板 ...
- MySQL5.6的4个自带库详解
MySQL5.6的4个自带库详解 1.information_schema详细介绍: information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数 ...
- php中的PDO函数库详解
PHP中的PDO函数库详解 PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,P ...
- STM32 HAL库详解 及 手动移植
源: STM32 HAL库详解 及 手动移植
- 爬虫入门之urllib库详解(二)
爬虫入门之urllib库详解(二) 1 urllib模块 urllib模块是一个运用于URL的包 urllib.request用于访问和读取URLS urllib.error包括了所有urllib.r ...
- Python爬虫系列-Urllib库详解
Urllib库详解 Python内置的Http请求库: * urllib.request 请求模块 * urllib.error 异常处理模块 * urllib.parse url解析模块 * url ...
随机推荐
- Django:母版、继承、组件、自定义标签
1.for循环应用 1.1for Variable Description forloop.counter 当前循环的索引值(从1开始) forloop.counter0 当前循环的索引值(从0开始) ...
- sql 注入风险
目录 sql 注入风险 什么是sql注入呢? 查看sql注入风险 如何避免 sql 注入风险 pymysql 简单规避注入风险示列 sql 注入风险 什么是sql注入呢? 参考百度 查看sql注入风险 ...
- Qt 窗口相关的常用操作
PS: 本文使用的是Qt 4.8.4版本,不同版本代码可能会有差异 设置窗口标题 setWindowTitle(QString::fromLocal8Bit("易语言")); 禁用 ...
- UCOSIII互斥信号量
互斥信号量可以解决优先级反转问题 优化后现象 优化方法:L和H等待同一个信号量的时候,将L任务优先级提至H相同优先级 实验举例 void start_task(void *p_arg) { OS_CR ...
- Core Animation笔记(特殊图层)
1.shapeLayer: 渲染快速,内存占用小,不会被图层边界裁掉(可以在边界之外绘制),不会像素化(当做3D变化如缩放是不会失真) CGRect rect = self.containerView ...
- SAP ABAP的CI/CD解决方案
如今国外很多partners已经在尝试Jenkins + abapGit + 公有云搭建ABAP CI/CD环境了.ABAP系统的改动通过abapGit提交,触发Jenkins上部署的命令行脚本,脚本 ...
- 用java代码实现构造目录树
怎么用java代码实现上面这样的目录树? 首先创建数据表 每条数据记录自己的id以及父节点的id 然后进入java代码部分: public String directory(String author ...
- Navicat Premium12激活教程
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 先到官网下载Navicat,然后安装(怎么安装就不阐述了). 然后,到Github上下载作者发 ...
- [https][tls] 如何使用wireshark查看tls/https加密消息--使用私钥
之前总结了使用keylog进行https流量分析的方法: [https][tls] 如何使用wireshark查看tls/https加密消息--使用keylog 今天总结一下使用服务器端证书私钥进行h ...
- 基于k8s集群部署prometheus监控etcd
目录 基于k8s集群部署prometheus监控etcd 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署prometheus监控 ...