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 ...
随机推荐
- SpringBoot+SpringCloud+vue+Element开发项目——集成Swagger文档
在pom.xml文件中添加Maven依赖 <!--swagger--> <dependency> <groupId>io.springfox</groupId ...
- JSP页面嵌套c:forEach
做java web项目有时候会需要在页面使用嵌套<c:forEach>遍历一个List,但是嵌套很容易忽略一些东西导致出错 后台代码: List<Map<String, Obj ...
- 【JUC】7.CountDownLatch
Latch:门闩.一种线程通信的方式:当程序不涉及同步,仅仅需要线程通信的时候,使用synchronize或者lock的线程通信等待唤醒机制,就显得太重了: 这时候,可以考虑使用信号量类:CountD ...
- mysql查看当前实时连接数
静态查看: SHOW PROCESSLIST; SHOW FULL PROCESSLIST; SHOW VARIABLES LIKE '%max_connections%'; SHOW STATUS ...
- 迷你商城后台管理系统————stage1需求分析
PS:迷你商城后台管理系统---需求分析.docx下载~click me 迷你商城后台管理系统-- 需求分析 1. 引言 作为互联网热潮的崛起,消费者们的普遍差异化,实体商城要想在互联网的浪潮中继续发 ...
- IP和网络互联
IP和网络互联 IP网络互连机制: IP地址分类方法及原因: CIDR地址(无分类地址): IP分组首部格式: 数据分片方法: IP分组传输思路:
- C++(三十七) — 字符串的函数重载—案例
1.MyString.h 头文件 #pragma once #include <iostream> using namespace std; class MyString { public ...
- Spring Boot 配置文件中的花样
原文:https://www.cnblogs.com/didispace/p/11002732.html 在快速入门一节中,我们轻松的实现了一个简单的RESTful API应用,体验了一下Spring ...
- 《CoderXiaoban》第九次团队作业:Beta冲刺与验收准备2
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十三 团队作业9:BETA冲刺与团队项目验收 团队名称 Coderxiaoban团队 作业学习目标 (1)掌握软件黑盒 ...
- VBS 数组冒泡排序
'定义变量 Dim arr1 '数组赋值 arr1 = array(, , , , , , ,) To UBound(arr1) To UBound(arr1) k=arr1(m) If arr1(m ...