IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python Beautifulsoup 选择器 -> 正文阅读

[Python知识库]Python Beautifulsoup 选择器

Beautifulsoup 选择器

节点选择器:

选取元素的方法:

  • 实例化beautifulsoup对象后 在对象后加上标签名即可 例如:soup.title
  • 获取到的节点是tag对象
  • 当有多个相同节点是,只会返回第一个节点

节点选择器嵌套选择的方法:
soup.tag.tag
在tag类型的基础上再次选择得到的依旧是tag类型

关联选择的方法:
1.子节点 contents,children
2.子孙节点 descendants
3.父节点 parent
4.祖先节点 parents
5.兄弟节点 next_sblings previous_sblings previous_sbling next_sbling

from bs4 import BeautifulSoup
import bs4
import requests
url='https://www.baidu.com/'
html=requests.get(url)
html.encoding='utf-8'
html=html.text
print(html)
#传入参数,实例化对象
soup=BeautifulSoup(html,'lxml')
#定位元素title
print(soup.title)
#查看获取的结果类型     tag对象
print(type(soup.title))
#当html中有多个相同节点时 只会提取第一个节点
print(soup.a)


#节点选择器 提取信息 例如下方 在tag标签后加 name 返回标签名:a
print(soup.a.name)
#获取属性 在tag对象后加上attrs 返回一个带有属性的字典
print(soup.a.attrs)
print(soup.a.attrs['name'])
#获取tag内容 soup.tag.string 例子如下
print(soup.a.string)


html=requests.get('http://stu.nuist.edu.cn/LOGIN.ASPX')
soup=BeautifulSoup(html.text,'lxml')
#嵌套选择   获取 tr节点的子节点td里的内容    soup.tag.tag
print(soup.tr.td.string)


#关联选择方法:

#子节点 contents  children
# 第一种contents返回列表
# 第二种children返回生成器
#不返回子孙节点
for i in soup.table.contents :
    print(i)
    print(type(i))
    print('='*50)
tables=soup.table.children
    #children 返回生成器 使用for循环  enumerate枚举便利
for i,child in enumerate(soup.table.children):
    if type(child)==bs4.element.NavigableString:
        continue
    print(i)
    print('='*50)
    print(type(child))
#父节点 parent 返回的就是一个节点
    #获取 td节点的父节点  tr 节点
print(soup.td.parent)
print('='*50)

#祖先节点 parents  返回的是一个生成器
    #获取td节点的祖先节点
td=soup.td.parents
for i in enumerate(td):
    print(i)
    print('='*50)

# 兄弟节点
    #next_sbling 后面一个节点
    #next_sblings
    #previous_sbling 前面一个节点
    #previous_sblings 前面所有节点

CSS选择器:

soup.select()
   1. id选择器需要使用#来定位元素 例如 获取第一个ul节点 他的id是list-1 则id选择器为 #list—1
   2. 类选择器需要使用.来定位元素 例如 获取所有的ul 他们都有类list  则类选择器为 .list
   3. 标签选择器 直接使用标签名来获取
   4. 混合使用 每一个选择器中间空格
   5. css嵌套选择与节点选择器的嵌套选择是一样的 在tag类型的基础上再次选择依旧是tag类型
   6. css选择器获取属性的方法与之前的节点选择器获取属性的方法一样,使用attrs属性来获取
   7. css选择器获取文本的方法依旧和节点选择器一样,使用string和strings属性来获取 strings获取当前及子孙节点的文本
import requests
from bs4 import BeautifulSoup
html=requests.get('http://stu.nuist.edu.cn/LOGIN.ASPX')
soup=BeautifulSoup(html.text,'lxml')

#标签选择 直接写标签名 返回列表
print(soup.select('td'))
#类选择   使用.来定位元素
# print(soup.select())

#id选择器使用#来定位元素

#混合选择器 混合使用 每一个选择器中间空格
print(soup.select('tr td'))

print(soup.select('#userbh'))

方法选择器:

使用 soup.findall(),soup.find() 通过传入参数来进行精准定位
find_all(),find(),find_parents(),find_parent(),find_next_siblings(),find_next_sibing(),find_previous_sibing(),find_previous_sibings(),find_all_next(),find_next(),find_all_previous(),find_previous()
以上方法的参数都是类似的:
name:传入字符串参数 即标签名 可以传入字符串 正则表达式 列表 True
attrs:
recursive
text
**kwargs

from bs4 import BeautifulSoup
import requests
html=requests.get('http://stu.nuist.edu.cn/LOGIN.ASPX')
soup=BeautifulSoup(html.text,'lxml')

#find_all 方法 搜索当前节点的所有符合条件的节点
#find_all(name,attrs,recursive,text,**kwargs)
'''
name:传入字符串参数 即标签名  可以传入字符串 正则表达式 列表 True
attrs
recursive
text
**kwargs
'''
#  查找所有td标签节点
print(soup.findAll('td'))

#attrs参数 接受含有接受的属性值的标签
#参数形式为字典:
print(soup.findAll(attrs={'name':'save2','type':'button'}))

# **kwargs参数 接受常用的属性参数 如id class 与attrs类似
#参数形式 为   变量赋值的形式   如下
print(soup.findAll(id='save2',type='button'))
#注意:   class  是python中的一个关键字  所以在使用的时候需要加一个下划线 即 class_='element'

#text参数 查询含有接受文本的标签 参数形式 字符串
print(soup.find(text='用户名:').parent)

#limit参数 限制返回结果的数量 参数形式为整数

#recursive参数  决定是否获取子孙节点  默认为:True
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-29 23:02:34  更:2022-01-29 23:03:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:27:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码