首页 > 其他分享 >BeautifulSoup 使用多条件查询

BeautifulSoup 使用多条件查询

时间:2023-08-08 20:56:14浏览次数:39  
标签:name BeautifulSoup 查询 soup Elsie 条件 div class select

       最近开始学习python的爬虫,开始的时候单纯的用requests.get(url)取得源代码后,用正则表达后来取得相关的数据,效率不高,接触到BeautifulSoup,发现确实方便.

       正好遇到一个问题,需要取的数据在两个div中,是两个class名,最开始的时候是取得两次来得到数据,就想精简一下,弄成两个值的或的关系,发现例子比较多的是不同标签的属性可以是与的关系,在网上找了一圈没有发现自己想要的结果

仔细的看下了BeautifulSoup的文档,发现在例子里面有讲: 同时用多种CSS选择器查询元素的例子:

soup. select ( "#link1,#link2" )
# [Elsie,
#  Lacie]
但这个默认的id的这个属性,没有讲其它属性,不知道其它的属性是否也可以,于是自己试了下发现可以,以下三种写法都可以
soup. select ( "div.class_first_name,div.class_two_name" )
或
soup. select ( "div[class~=class_first_name], div[class~=class_two_name]" )
或
soup. select ( "div[class=class_first_name], div[class=class_two_name]" )
自己也走了些弯路,例子里面有#号,不知道写这些的时候是否也需要#,倒子里面写的直接是id的属性,没有写标签,也不知道带指定的标签是否可行,仔细的看文档,有讲通过CSS的类名查找
soup. select ( ".sister" )
# [Elsie,
#  Lacie,
#  Tillie]

soup. select ( "[class~=sister]" )
# [Elsie,
#  Lacie,
#  Tillie]

于是结合这几个例子,自己结合一步步的试,先试出不指定标签时获取两个class的与的关系,然后再加上指定标签的,达到了自己的目的

现在新的问题又来了,我想取的两个值都出现在div第一次出现的时候,这个倒是可以用limit的值来控制

如果值是这样的
Elsie
Elsie
Elsie
Elsie
我们可以用如下语句来获取想得到的值
soup. select ( "div[class=class_first_name], div[class=class_two_name]" , limit=2)
但如果是这样的
Elsie
Elsie
Elsie
Elsie
如上的命令则会取两个first的值 ,limit只能控制总数,不能达到每个div取第一次出现的时候的值,不知道有什么办法能改成自己想要的这种结果。

 

标签:name,BeautifulSoup,查询,soup,Elsie,条件,div,class,select
From: https://www.cnblogs.com/welink/p/17615242.html

相关文章

  • SQL查询时增加序号
    在SQL查询时ERP或其它管理系统需要增加序号后再插入表中,详情如下。定义:(OS_NO:单号)--无需按单号分组的用: row_number()over(orderbyOS_NO)asrowid--需按单号分组的用: row_number()over(partitionbyOS_NOorderbyOS_NO)asrowid......
  • 凸优化9——强对偶条件、几何解释、影子价格
    中科大-凸优化笔记(lec31)-Lagrange对偶(三)_及时行樂_的博客-CSDN博客中科大-凸优化笔记(lec32)-几种解释_及时行樂_的博客-CSDN博客关于Slater条件的证明有点难,我觉得暂时先记住就好此外我关注了一下影子价格这个东西什么是影子价格?——线性规划的对偶解,及拉格朗日乘数-知乎(......
  • Django博客开发教程:体验数据查询
    进行数据查询之前,我们需要先进入我们的管理后台,在里面添加一些数据。然后我们用Pycharm打开我们的数据库。具体操作方法:用Pycharm可视化操作数据库我们的数据结构长这般模样:双击blog_article,可以查看到文章表里的内容和里面的字段:数据查询,就是在视图函数里(views.py文件里)对......
  • 导出mysql查询结果到文件中
    1、https://blog.csdn.net/sqL520lT/article/details/121688510[Linux导出sql]Linux上面导出mysql查询结果前言:仔细看最后一步操作 肯定可以的登录服务器mysql以后先查看他的这个路径  :存储sql文件的路径   mysql>showvariableslike'%secure_file_priv%';......
  • DataFrame 使用条件索引选择满足条件的行
    importpandasaspd#创建示例DataFramedata={'A':[1,2,3,4,5],'B':['a','b','c','d','e'],'C':[10,20,30,40,50]}df=pd.DataFrame(data)#使用条件索引选......
  • python 使用BeautifulSoup的 html5lib爬取网站内容
    1、使用BeautifulSoup的'html5lib'能像网页工具一样渲染内容。缺点:运行比较慢2、安装包pipinstallhtml5lib3、直接获取网页的所有有效内容importrequests#数据请求模块第三方模块pipinstallrequestsfrombs4importBeautifulSoupheads={'User-Agen......
  • CentOS 查询端口占用情况
    使用netstat命令:netstat-tuln|grep<端口号>将<端口号>替换为你要查询的端口号。例如,如果你要查询端口80的占用情况,可以输入:netstat-tuln|grep80上述命令将列出所有占用端口80的进程和其PID。使用lsof命令:lsof-i:<端口号>将<端口号>替换为你要查询的端......
  • 数据仓库(十二)---分布式SQL查询引擎---teradata版本的presto安装和使用
    我们在使用presto过程中,发现facebook原版和京东原版都是解压可用,teradata版本的安装要麻烦一些。下面对teradata版本的安装过程进行记录。首要条件1、需要python2.6或者python2.7环境之所以需要python环境是因为teradata版本的presto把安装封装成了集群式安装。根据配置在安装过......
  • Siemens 西门子博途各版本安装条件及下载汇总
    【一】安装STEP7Basic/ProfessionalV17的基本要求序号安装STEP7Basic/ProfessionalV17的要求1硬件要求安装STEP7Basic/ProfessionalV17的计算机推荐满足以下需求:处理器:Intel®Core™i5-8400H(2.5到4.2GHz;4核+超线程;8MB智能缓存)内存:16GB或......
  • 数据查询解决列名和java对象属性名对不上——三种方法
    问题描述:当使用查询语句时,返回来的数据出现null值。下面是数据库映射文件代码查询语句:<selectid="selectCarById"resultType="com.powernode.mybatis.pojo.Car">select*fromt_carwhereid=#{id}</select>下面是返回查询返回数据 原因是:查询结果集的列名:id,c......