python爬虫笔记之re.compile.findall()
re.compile.findall原理是理解了,但输出不大理解(主要是加了正则表达式的括号分组)
一开始不懂括号的分组及捕捉,看了网上这个例子(如下),然而好像还是说不清楚这个括号的规律(还是说我没找到或是我理解能力太差),还是看不出括号的规律,于是更多的尝试(第二张大图),并最后总结规律。
下图是为了尝试出括号分组的规律,下面是总结
就从最后一次匹配说起吧
分析:首先是匹配的顺序,分析某个括号时,暂时去掉其它括号,易读
第一步,先对整个‘ ’内的规则作出匹配,整体匹配,先去括号(易读),即先从s中匹配出第一个【\w+\w+\s+\w+\s+\w+】(去括号的样子),但由于没有括号将这个整体扩上,所以没有捕捉(即不用输出),第一个匹配到的大字符串是“qew rty uio”
【可以这样一个个对应】
\w+ \w+ \s+ \w+ \s+ \w+
| | | | | |
qe w rty uio
对应图
第二步,匹配到的字符串再进行匹配捕捉,即输出,现在从左往右,一个个左括号捕捉起,第一个左括号【(\w+\w+\s+\w+)】(暂时去掉了嵌套在中间的左括号,易读),则匹配到上面字符串中(“qew rty uio”)的"qew rty"(可对照上面的对应图),由于是括号内,所以捕捉(即输出)
第三步,第二个括号,\w+(\w+)\s+\w+(暂时去掉其它括号) 匹配上一括号中的字符串(“qew rty”),即是匹配到‘w’(可对照上面的对应图),由于是括号内,所以捕捉(即输出)
第四步,第三个括号,\w+\w+\s+\w+(\s+\w+)(暂时去掉其他括号)匹配并输出第一步中的字符串,即是“uio”
总结:
1、首先全部去括号的匹配,画出对应图,这样很清晰,然后看括号内的即捕捉输出,然后在匹配的文本(s)再寻找下一个匹配的大字符串,一直找下去……
2、去括号是为了清晰的分析,主要注意从第一个左括号开始分析起
3、如果是嵌套括号,如(((a)b)(c)d),若要捕捉a括号的字符,则先需要匹配最外面的括号,然后在慢慢往里面匹配,即是先匹配出d括号的内容,再在d括号里面匹配出b括号的内容,再在b括号中匹配出a括号的内容,然后所有括号里的,输出,按左边第一个括号所匹配的字符串排列:(d,b,a,c)
如有错误,麻烦及时指正,谢谢!
python爬虫笔记之re.compile.findall()的更多相关文章
- [Python爬虫笔记][随意找个博客入门(一)]
[Python爬虫笔记][随意找个博客入门(一)] 标签(空格分隔): Python 爬虫 2016年暑假 来源博客:挣脱不足与蒙昧 1.简单的爬取特定url的html代码 import urllib ...
- Python爬虫笔记一(来自MOOC) Requests库入门
Python爬虫笔记一(来自MOOC) 提示:本文是我在中国大学MOOC里面自学以及敲的一部分代码,纯一个记录文,如果刚好有人也是看的这个课,方便搬运在自己电脑上运行. 课程为:北京理工大学-嵩天-P ...
- python爬虫笔记Day01
python爬虫笔记第一天 Requests库的安装 先在cmd中pip install requests 再打开Python IDM写入import requests 完成requests在.py文 ...
- Python爬虫笔记技术篇
目录 前言 requests出现中文乱码 使用代理 BeautifulSoup的使用 Selenium的使用 基础使用 Selenium获取网页动态数据赋值给BeautifulSoup Seleniu ...
- Python爬虫笔记安装篇
目录 爬虫三步 请求库 Requests:阻塞式请求库 Requests是什么 Requests安装 selenium:浏览器自动化测试 selenium安装 PhantomJS:隐藏浏览器窗口 Ph ...
- Python爬虫笔记(一):爬虫基本入门
最近在做一个项目,这个项目需要使用网络爬虫从特定网站上爬取数据,于是乎,我打算写一个爬虫系列的文章,与大家分享如何编写一个爬虫.这是这个项目的第一篇文章,这次就简单介绍一下Python爬虫,后面根据项 ...
- Python爬虫笔记【一】模拟用户访问之设置请求头 (1)
学习的课本为<python网络数据采集>,大部分代码来此此书. 网络爬虫爬取数据首先就是要有爬取的权限,没有爬取的权限再好的代码也不能运行.所以首先要伪装自己的爬虫,让爬虫不像爬虫而是像人 ...
- python爬虫笔记之re.match匹配,与search、findall区别
为什么re.match匹配不到?re.match匹配规则怎样?(捕一下seo) re.match(pattern, string[, flags]) pattern为匹配规则,即输入正则表达式. st ...
- Python爬虫笔记(一)
个人笔记,仅适合个人使用(大部分摘抄自python修行路) 1.爬虫Response的内容 便是所要获取的页面内容,类型可能是HTML,Json(json数据处理链接)字符串,二进制数据(图片或者视频 ...
随机推荐
- 规则“Microsoft Visual Studio 2008 的早期版本”失败。此计算机上安装了 Microsoft Visual Studio 2008 的早期版本。请在安装 SQL Server 2008 前将 Microsoft Visual Studio 2008 升级到 SP1。
今天重装了一下系统后,需要装开发工具,我用的开发工具是Visual Studio2008 和SQL Server2008R2,装完Visual Studio2008的时候在装数据库的时候却出现这样的问 ...
- 算法之--字符串反转【python实现】
题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b'移动到字符串的尾部,使得原字符串变成字符串“cdefab”.请写一个函数 ...
- ef 查询总结
1.Linq 查询两张表:a表和b表,要得到的数据是a表数据b表没有 例如:a表有5条数据1,2,3,4,5:b表有2条数据1,3:那么就用dataGridView1输出2,4,5:link语句要怎么 ...
- 华为ensp的安装和使用
去年学完了Cisco的路由交换,从CCNA学到CCIE.学完之后才发现,整个国内市场好像更倾向于使用华为.H3C这类国有网络设备厂商.不过还好,至少网络的基础理论知识是相同的,于是买了基本关于HUAW ...
- ShellExecute的跨平台实现OpenUrl
OpenUrl 是 iOS 中 UIApplication 提供的一个函数,用于调用其它程序.实际上各个平台都有自己的实现,这里提供一个直接封装完的跨平台版本给大家. uses {$IFDEF M ...
- 常见的几个Qt编程问题的处理(转自QT中文论坛)(挺实用的)
1.如何在窗体关闭前自行判断是否可关闭答:重新实现这个窗体的closeEvent()函数,加入判断操作 void MainWindow::closeEvent(QCloseEvent*event){i ...
- java之继承中的静态变量
package Test; /** * Created by wangbin10 on 2018/7/9. * 我们知道静态变量属于类级别变量,对应每个类只有一份,类的所有实例共有一份,而成员变量则分 ...
- 再说Java集合,subList之于ArrayList
上一章说了很多ArrayList相关的内容,但还有一块儿内容没说到,那就是subList方法.先看一段代码 public static void testSubList() { List<Str ...
- angular安装
安装时间:20190703安装环境:win10 1 安装Nodejs 1.1 下载地址:https://nodejs.org/en/ 1.2 下载完成之后双击安装,安装完成之后无需配置环境变量(安装的 ...
- 第一章 corejava的入门
第一章 corejava的入门一:什么是语言语言=os+数据结构+算法+思想os:操作系统数据结构:队,栈,二叉树,链表算法:做游戏开发时非常重要面试题:int a>0,b>0只使用一条输 ...