当前位置: 首页 > news >正文

3.BeautifulSoup库

  1. 解析网页:
  • 导入BeautifulSoup:from bs4 import BeautifulSoup
  • 解析HTML或XML文件,只需设置对应的转换器即可
	import requests
	from bs4 import BeautifulSoup
	url=”http://baidu.com”
	r=requests.get(url)
	demo=r.text
	soup=BeautifulSoup(demo,”html.parser”) #两个参数:一个为html页面,另一个是解析器
	print(soup.prettify())#格式化html结构,更加美观的显示html页面信息
  1. 结构化数据的浏览:
  • soup:相当于树结构的根节点
  • soup.title:返回第一个, bs4.element.Tag类型

The Dormouse’s story

  • soup.title.name:返回标签名称,字符串str类型
    #‘title’

  • soup.title.string:获取的内容,返回值为bs4.element.NavigableString类型
    #‘The demo python introduces several python courses.’

  • soup.title.parent.name:返回第一个标签的父元素的名称
    #‘head’

  • soup.p:返回所有子孙中第一个

  • soup.p[‘class’]:返回第一个

    标签的class属性名称,结果为list列表类型
  • soup.a.attrs:返回第一个标签的所有属性值,结果为dict字典类型
    #{‘href’: ‘http://www.icourse163.org/course/BIT-268001’,
    ‘class’: [‘py1’],
    ‘id’: ‘link1’}
    #可以通过soup.a.attrs[‘class’]获取key为class的具体值

  • soup.find_all(name,attrs,recursive,string):结果为list形式

  • name为标签名称的检索字符串,可以为一个标签or读个标签名称的列表;如:soup.find_all(‘a’):返回所有的;soup.find_all([‘a’,’p’]):返回是所有的标签和

    标签
  • attrs:为字典形式,包含若干属性和对应的属性值,如:.find_all(‘span’,{‘id’:[’link1’,’link2’]}),找到所有的id为link1或link2的span标签

  • recursive:默认为True, 对子孙节点进行遍历;若为False,只对一级节点进行遍历

  • string:对标签的文本信息进行完全匹配,如:soup.find_all(‘a’,string=‘Advanced Python’),这里的string可以换成text;若想进行不完全匹配,可以soup.find_all(‘a’,string=re.compile(“Python”)),这里匹配的是包含python的字符串的标签a的列表

  • soup.find(id=”link3”):此用法和find_all相同,不过只返回第一个值;返回id=”link3”的第一个标签;soup.find(‘div’,‘articles-list’),默认为class

  • 当html结构中有注释时(b标签内部结构中有注释),通过soup.b.string并不会标志其为注释类型,但是其类型为bs4.element.Comment

相关文章:

  • 8.cookie的获取
  • 商标注册需要什么材料
  • 什么是布隆过滤器
  • 什么是Quartz
  • 【golang】认识 Go 并发+
  • 你知道你的竞争优势吗?
  • 数据结构刷题:第四天
  • Spring日志
  • VsCode集成Python开发环境
  • 使用platformio+arduino开发自定义板子STM32G070
  • 推荐系统中的特征工程
  • Spring application.properties
  • uniapp 之 获取底部安全距离,状态栏高度等
  • 【Python数据分析 - 6】:Numpy中的逻辑运算
  • SpringBoot自定义banner
  • [译]前端离线指南(上)
  • Debian下无root权限使用Python访问Oracle
  • golang 发送GET和POST示例
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Javascript弹出层-初探
  • js递归,无限分级树形折叠菜单
  • JWT究竟是什么呢?
  • PHP CLI应用的调试原理
  • unity如何实现一个固定宽度的orthagraphic相机
  • vue 配置sass、scss全局变量
  • 闭包--闭包作用之保存(一)
  • 仿天猫超市收藏抛物线动画工具库
  • 简析gRPC client 连接管理
  • 如何解决微信端直接跳WAP端
  • 我的zsh配置, 2019最新方案
  • 用 Swift 编写面向协议的视图
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 怎么把视频里的音乐提取出来
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • "无招胜有招"nbsp;史上最全的互…
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #控制台大学课堂点名问题_课堂随机点名
  • $.ajax()参数及用法
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (待修改)PyG安装步骤
  • (三) diretfbrc详解
  • .Net Remoting(分离服务程序实现) - Part.3
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 解决重复提交问题
  • .NET运行机制
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • @Query中countQuery的介绍
  • [ linux ] linux 命令英文全称及解释
  • [Android]常见的数据传递方式
  • [Android]创建TabBar
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [BZOJ1008][HNOI2008]越狱
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • [c]扫雷
  • [C++基础]-入门知识