首页 > 编程语言 >python-数据解析-bs4介绍

python-数据解析-bs4介绍

时间:2024-01-05 23:24:25浏览次数:65  
标签:soup python li bs4 print div 解析 select

一、数据解析方式-bs4

1、  爬虫数据的解析常用方式有三种:

   1、正则表达式

   2、bs4

   3、xpath解析

2、本次主要学习bs4,首先要先准备好环境,即要安装使用beautiful Soup,这里已经安装好了bs4模块,如下:

 pip install bs4 和 pip install lxml

 3、通过一个实例理解bs4的用法:

<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Title</title>
    </head>
    <body>
        <div class="url">
            <ul>
                <li><a href="http://www.baidu.com">百度</a></li>
                <li><a href="http://www.google.com">谷歌</a></li>
                <li><a href="http://www.sogou.com">搜狗</a></li>
            </ul>
            <ol>
                <li><a href="feiji">飞机</a></li>
                <li><a href="dapao">大炮</a></li>
                <li><a href="huoche">火车</a></li>
            </ol>
        </div>
        <div class="job">李嘉诚</div>
        <div class="common">胡辣汤</div>
    </body>
</html>

如下:

from bs4 import BeautifulSoup  #导入bs4
if __name__=="__main__":
    # 将本地的html文档中的数据加载到该对象中
    file = open('b.html', encoding='utf-8')
    soup = BeautifulSoup(file,'lxml')


  print(soup.ul)         #返回ul所有内容
    # < ul >
    # < li > < a
    # href = "http://www.baidu.com" > 百度 < / a > < / li >
    # < li > < a
    # href = "http://www.google.com" > 谷歌 < / a > < / li >
    # < li > < a
    # href = "http://www.sogou.com" > 搜狗 < / a > < / li >
    # < / ul >
print(soup.div)      #等同于print(soup.find('div'))
#具体定位到某一个div,可根据属性定位
print(soup.find('div',class_='common')) #<div class="common">胡辣汤</div>
# 属性定位
soup.findAll('tagName') #返回soup中符合要求的所有标签
a_list = soup.findAll('a') #返回的是一个列表
for a in a_list:
print(a)
print(soup.findAll('a')[1]) #定位第2个a标签的内容
# <a href="http://www.google.com">谷歌</a>

# select选择器:
# -select('某种选择器(id,class ,标签。。。选择器)’)
print(soup.select('.common')) #返回login下的所有标签 :[<div class="common">胡辣汤</div>]
print(soup.select('div')[1]) #返回一个列表 :<div class="job">李嘉诚</div>

#  层级选择器
# soup.select('.tag > ul > li > a')[1]#:表示的一个层级,不能在里写所有,
print(soup.select('.url > ol > li > a '))
# [<a href="feiji">飞机</a>, <a href="dapao">大炮</a>, <a href="huoche">火车</a>
#一个>表示一个层级
print(soup.select('.url > ul > li > a')[0]['href'])
# http://www.baidu.com
print(soup.select('.url ul a'))  #[<a href="http://www.baidu.com">百度</a>, <a href="http://www.google.com">谷歌</a>, <a href="http://www.sogou.com">搜狗</a>]
print(soup.select('.url ol li a')) #[<a href="feiji">飞机</a>, <a href="dapao">大炮</a>, <a href="huoche">火车</a>]
获取标签的文本数据
#text/get.text()  可以获取某一个标签中所有内容
#string :获取直系标签的内容
print(soup.find('div',class_= 'url').text)  #获取一个url下的所有的值
百度
谷歌
搜狗
飞机
大炮
火车
#获取某一个元素的值
print(soup.find('div',class_= 'job').string) #李嘉诚

获取属性的值比如href
# 1、查找所有的<a>标签元素,2、打印每个<a>标签的href属性值
links = soup.findAll('a')
for link in links:
print(link['href'])

 

标签:soup,python,li,bs4,print,div,解析,select
From: https://www.cnblogs.com/zp513/p/17948225

相关文章

  • python第一节:简介、下载、安装​
    第一节:简介、下载、安装简介:Python的创造者吉多·范罗苏姆。Python是一款易于学习、跨平台语言、免费和开源、的编程语言。有丰富的第三方模块库,应用领域非常广泛。常用于数据采集、数据分析和计算、数据挖掘、人工智能等。下载:下载地址:https://www.python.org/安装:先选中下面两......
  • Python 通过 akshare 绘制中国平安均线并显示买卖点
    继续上篇,通过akshare绘制中国平台的均线,并在5日线上穿10日线的时候,显示买入信号,在5日线下穿10日均线的时候,显示卖出信号环境:python3.9(miniconda3)、Pycharm、Win10需要用的模块或者工具库:akshare(1.11.91)、pandas(2.1.1)、numpy(1.26.2)、matplotlib(3.8.2)、mplfinanc......
  • Python笔记三之闭包与装饰器
    本文首发于公众号:Hunter后端原文链接:Python笔记三之闭包与装饰器这一篇笔记介绍Python里面的装饰器。在介绍装饰器前,首先提出这样一个需求,我想统计某个函数的执行时间,假设这个函数如下:importtimedefadd(x,y):time.sleep(1)returnx+y想要统计add函数......
  • nginx低版本文件解析漏洞
    nginx低版本设计问题,会将图片解析成php文件复现查看nginx版本,符合低版本特征接下来我们随便上传一个图片文件,拦截这个请求,并且添加php代码。图片上传成功访问这个文件-可以正常访问接下来我们恶意访问,发现php代码被执行。......
  • C 语言指针完全指南:创建、解除引用、指针与数组关系解析
    C语言中的指针创建指针我们可以使用引用运算符&获取变量的内存地址:intmyAge=43;//一个int变量printf("%d",myAge);//输出myAge的值(43)printf("%p",&myAge);//输出myAge的内存地址(0x7ffe5367e044)指针是一个将另一个变量的内存地址作为其值的变量。......
  • C 语言指针完全指南:创建、解除引用、指针与数组关系解析
    C语言中的指针创建指针我们可以使用引用运算符&获取变量的内存地址:intmyAge=43;//一个int变量printf("%d",myAge);//输出myAge的值(43)printf("%p",&myAge);//输出myAge的内存地址(0x7ffe5367e044)指针是一个将另一个变量的内存地址作为其值的变量......
  • 使用 Python 进行简单的人脸识别
    介绍人脸识别技术已经成为当今世界许多领域的重要应用,从安全领域到社交媒体,无处不在。Python提供了许多强大的库和工具,使得实现人脸识别变得更加容易。本文将介绍如何使用Python中的一些流行库来进行简单的人脸识别。准备工作在开始之前,确保你已经安装了以下库:OpenCV:用于......
  • python人脸识别
    应用范围广泛安全与监控:人脸识别在安防领域中具有显著的应用,可用于识别入侵者或追踪犯罪嫌疑人。社交媒体和相册组织:社交媒体平台和相册应用可以利用人脸识别来自动标记照片中的人物,方便用户组织和查找照片。医疗保健:人脸识别技术在医疗保健中用于患者身份验证和监测,例如识别......
  • Python Pandas 数据清洗
    ​ 1、处理缺失数据处理缺失数据是数据清洗过程的一个重要部分。缺失数据可以以多种方式出现,最常见的是作为NaN(NotaNumber)。处理缺失数据涉及使用 isna() 或 isnull() 检测缺失值,fillna() 填充缺失值,dropna() 删除包含缺失值的行或列,以及 interpolate() 对缺失值进......
  • python-bs4获取图片
    一、用一个实例来了解一下 1、既然要用BeautifulSoup来解析,首先要把需要的模块导入;importosimportrequestsfrombs4importBeautifulSoup2、创建一个文件夹来存放要下载的数据:文件的名可以用户自定义file_name="imgs"ifnotos.path.exists(file_name......