【转载】Python BeautifulSoup匹配字符串
作者:鸡仔说
链接:https://www.jianshu.com/p/ceb99aed4b2e
來源:简书
BeautifulSoup中可以通过name和attrs去定位名称和属性,以找到特定的html代码。更值得称赞的是,attrs支持正则表达式。
如:
<div class="cool">
<h1 class="abc">design</h1>
</div>
搜索此行,可以这样写
abcSoup = soup.find(name="h1", attrs={"class":"abc"})
但如果情况变成
<div class="cool">
<h1 class="abc">design</h1>
<h1 class="abc test1">design photo</h1>
<h1 class="abc test2">design product</h1>
</div>
此时,想一次性找到三个h1,就需要用到正则了。
abcSouplist = soup.find_all(name="h1", attrs={"class":re.compile(r"abc(\s\w+)?")})
便可以找到:
<h1 class="abc">design</h1>
<h1 class="abc test1">design photo</h1>
<h1 class="abc test2">design product</h1>
还有一种情况,就是判断一种属性是否存在,从而找到该文件。可以通过True和Flase进行筛选。
比如:
<div class="cool">
<h1 class="abc" id="test">design</h1>
<h1 class="abc test1">design photo</h1>
<h1 class="abc test2">design product</h1>
</div>
想选择所有不存在id属性的文件,可以写如下表达式筛选。
Soup.find_all("h1",attrs={"id":Flase})
就可以筛选出下面两行h1啦
<h1 class="abc test1">design photo</h1>
<h1 class="abc test2">design product</h1>
【转载】Python BeautifulSoup匹配字符串的更多相关文章
- [转载]Python正则表达式匹配反斜杠'\'问题
转载自csdnblog:Python正则表达式匹配反斜杠'\'问题 在学习Python正则式的过程中,有一个问题一直困扰我,如何去匹配一个反斜杠(即“\”)? 一.引入 在学习了Python特殊字符和 ...
- [Python]正则匹配字符串 | 蒲公英二维码图片url
代码示例: import re def Find(string): # findall() 查找匹配正则表达式的字符串 url = re.findall('http[s]?://(?:[a-zA-Z] ...
- python 正则匹配字符串里面的字符
import re x=re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest') print(x)
- 1.3 正则表达式和python语言-1.3.4使用 match()方法匹配字符串
1.3.4使用 match()方法匹配字符串(第一次写博客,格式,述语有不当之处还请见谅)2018-05-08 Python 代码是以Jupyter Notebook编写的,主要写的是python3的 ...
- Python学习手册之捕获组和特殊匹配字符串
在上一篇文章中,我们介绍了 Python 的字符类和对元字符进行了深入讲解,现在我们介绍 Python 的捕获组和特殊匹配字符串.查看上一篇文章请点击:https://www.cnblogs.com/ ...
- 第11.6节 Python正则表达式的字符串开头匹配模式及元字符“^”(插入符、脱字符)功能介绍
符号"^"为插入符,也称为脱字符,在Python中脱字符表示匹配字符串的开头,即字符串的开头满足匹配模式的要求.这个功能有点类似搜索函数match,只是这是通过搜索模式来指定,而m ...
- 第11.7节 Python正则表达式的字符串结尾匹配模式及元字符“$”功能介绍
符号"$"表示匹配字符串的结尾,即字符串的结尾满足匹配模式的要求. 在 MULTILINE 模式(搜索标记中包含re.MULTILINE,关于搜索标记的含义请见<第11.2节 ...
- 转载 python实例手册
python实例手册 #encoding:utf8# 设定编码-支持中文 0说明 手册制作: 雪松 更新日期: 2013-12-19 欢迎系统运维加入Q群: 198173206 # 加群请回答问题 请 ...
- 转载--python模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
随机推荐
- Note: log switch off, only log_main and log_events will have logs!
真机(华为c8813)在Eclipase上测试,打不出logcat信息,只有这样的一句话:Note: log switch off, only log_main and log_events will ...
- RK3288 dts文件中背光配置参数
backlight { // 设备名(用于匹配) compatible = "pwm-backlight"; // pwm编号 通道 频率(ns) pwms = <& ...
- ubuntu 设置固定DNS
1.打开 xxx@ubuntu:~$ sudo vim /etc/resolvconf/resolv.conf.d/base 2.输入以下DNS,保存退出. nameserver 8.8.8.8 na ...
- Java-Maven-Runoob:Maven 快照(SNAPSHOT)
ylbtech-Java-Maven-Runoob:Maven 快照(SNAPSHOT) 1.返回顶部 1. Maven 快照(SNAPSHOT) 一个大型的软件应用通常包含多个模块,并且通常的场景是 ...
- PHP判断文件是否被引入的方法get_included_files
<?php // 本文件是 abc.php include 'test1.php'; include_once 'test2.php'; require 'test3.php'; require ...
- thinkphp中的验证码的实现
1.php端生成验证码函数 public function verify(){ // 验证码 import("@.Util.Image"); Image::buildImageVe ...
- 第13章 Spring框架的设计理念与设计模式分析
13.1 Spring的骨骼架构 最核心的组件是:Core, Context, Bean. 13.1.1 Spring的设计理念 Spring最核心的组件是Bean组件.Spring解决的最关键的问题 ...
- IT_Qestion
1. Javascript 回调 Promise 2. Angularjs $parent 3. CSS margin padding border 4. Angularjs $filter 5. D ...
- CSS a 标签样式
CSS a 标签样式 a:LINK { color: red; } a:VISITED { color: yellow; } a:HOVER { color: green; } a:ACTIVE { ...
- Tornado 高并发源码分析之二---Tornado启动和请求处理流程
Tornado 服务器启动流程 因为Tornado 里使用了很多传类的方式,也就是delegate,之所以要这么做,其实和 iOS 开发那样,也很多的 delegate, 如此来实现高度解耦,但是比较 ...