Python的爬虫包Beautiful Soup中用正则表达式来搜索


Posted in Python onJanuary 20, 2016

Beautiful Soup使用时,一般可以通过指定对应的name和attrs去搜索,特定的名字和属性,以找到所需要的部分的html代码。

但是,有时候,会遇到,对于要处理的内容中,其name或attr的值,有多种可能,尤其是符合某一规律,此时,就无法写成固定的值了。

所以,就可以借助正则表达式来解决此问题。
比如,

<div class="icon_col">
    <h1 class="h1user">crifan</h1>
</div>

对应的BeautifulSoup代码如下:

h1userSoup = soup.find(name="h1", attrs={"class":"h1user"});

而如果html是这种:

<div class="icon_col">
    <h1 class="h1user">crifan</h1>
    <h1 class="h1user test1">crifan 123</h1>
    <h1 class="h1user test2">crifan 456</h1>
</div>

那么想要一次性地找到所有的,符合条件的h1的部分的代码,则之前的写法,就只能找到单个的class="h1user"的部分,剩下的两个

class="h1user test1"

class="h1user test2"

就找不到了。

那么,此时,就可以用到,BeautifulSoup中非常好用的,非常强大的功能:

attrs中支持正则表达式的写法

了。

就可以写成:

h1userSoupList = soup.findAll(name="h1", attrs={"class":re.compile(r"h1user(\s\w+)?")});

就可以一次性地,找到:

class="h1user"

class="h1user test1"

class="h1user test2"

了。

<div aria-lable="xxx">
之类的标签,xxx的内容未知(可变)的前提下

想要查找到对应的此div标签,之前不知道如何实现。
如果写成:

sopu.findAll("div", attrs={"aria-lable": "xxx"});

则xxx必须写出来,如果不写出来属性值,也就没法用上attrs了,就没法实现此处查找特性属性值的标签了。
所以针对:

<div aria-label="5星, 747 份评分" class="rating" role="img" tabindex="-1">
 <div>
 <span class="rating-star">
 </span>
 <span class="rating-star">
 </span>
 <span class="rating-star">
 </span>
 <span class="rating-star">
 </span>
 <span class="rating-star">
 </span>
 </div>
 <span class="rating-count">
 747 份评分
 </span>
</div>

可以通过:

soup.findAll("div", attrs={"aria-lable": True});

去查找到属性包含aria-lable的div标签的。

所以,对于上面的,之前不知道如何处理:

用BeautifulSoup查找未知属性值,但是已知属性的名字的标签

则此处,就可以针对:

<div aria-lable="xxx">

去用:

sopu.findAll("div", attrs={"aria-lable": True});

就可以查找到对应的包含属性aria-lable的div标签了。

Python 相关文章推荐
Python 可爱的大小写
Sep 06 Python
python网络编程学习笔记(三):socket网络服务器
Jun 09 Python
归纳整理Python中的控制流语句的知识点
Apr 14 Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
Python实现生成随机数据插入mysql数据库的方法
Dec 25 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
python实现决策树分类(2)
Aug 30 Python
python实现爬取百度图片的方法示例
Jul 06 Python
wxPython色环电阻计算器
Nov 18 Python
django有外键关系的两张表如何相互查找
Feb 10 Python
python实现猜单词游戏
May 22 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 #Python
Python制作爬虫抓取美女图
Jan 20 #Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
Jan 20 #Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
Jan 20 #Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
Jan 20 #Python
使用python实现省市三级菜单效果
Jan 20 #Python
八大排序算法的Python实现
Jan 28 #Python
You might like
php判断一个数组是否为有序的方法
2015/03/27 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
script标签属性用type还是language
2015/01/21 Javascript
浅谈JavaScript Math和Number对象
2015/01/26 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
js实现上下左右键盘控制div移动
2020/01/16 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
生物科学系大学生的自我评价
2013/12/20 职场文书
促销活动策划方案
2014/01/12 职场文书
剪彩仪式主持词
2014/03/19 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
2014年度培训工作总结
2014/11/27 职场文书
民事纠纷协议书
2016/03/23 职场文书
基于Python实现股票收益率分析
2022/04/02 Python