借助正则表达式根据相应格式可以快速的爬取特征数据和元素 需要注意的是,一些元字符不会被爬取
1. “.” 匹配除了换行符之外的任何单个字符
语法格式为
.元素
匹配到该个元素及该元素之前的一个元素
content='''
测试开发工程师〈C++ / python〉上海墨鹊数码科技有限公司上海-潏东新区2.5万/每月02-18未满员
Python3开发工程师上海德拓信息技术股份有限公司上海-徐汇区1.3万/每月02-18剩余11人
python开发工程师上海优似腰软件开发有限公司上海-浦东新区2.5万/每月02-18满员
测试开发工程师(Python〉赫里普(上海〉信息科技有限公司上海-浦东新区1.1万/每月02-18剩余5人
Python高级开发工程师上海行动教育科技股份有限公司上海-闵行区2.8万/月02-18剩余255人
Python3高级开发工程师上海互教教育科技有限公司上海-浦东新区2万/月02-18满员'''
import re
p = re.compile('.万')
for i in p.findall(content):
print(i)
2.“ * ”匹配出现的表达式或值(任意次数)
例如
, . 表示匹配逗号后的第一个字符,但若是改成 , . * 表示 . 可以循环无数次,不断的进行匹配,直到匹配到元字符为止。
还可以不加 . 号,用 字符 * 的形式,会不断向后匹配与字符相同的元素,若存在不相同的则不再进行匹配。
3.“ + ”匹配出现的表达式或值(任意次数)
+ 号与 * 号的匹配类似,但 * 号包含零次,只要出现相应的元素就可以匹配;而加号只能从1开始匹配,只有完全相同的元素可以匹配上。
若一定要逗号后面跟内容,那就用 + 号而不用 * 号
4.花括号 { } 可以限制匹配次数
{ }中可以添加两个元素设置取值的范围,也可以只添加一个元素划定要取的值的大小
5.贪婪模式和非贪婪模式
在使用 + 和 * 运算符时我们会发现他们会自动的匹配尽量多的元素以满足自己的需求,这也就是贪婪模式。而我们可以使用 ?运算符将爬取模式切换为非贪婪模式,当爬取成功次数达到1后就不再匹配元素。
6.转义字符 “ \ ”
若要搜索的字符包含元字符,则要通过 \ 进行转义
其中 \ . 表示从 . 字符开始寻找,. * 表示寻找的方式和次数
同时 \ 也可以表示匹配某种字符类型
\d 表示匹配0-9的任意一个字符
\D 表示匹配一个不是0-9的数字字符
\s 表示匹配任意一个空白字符,包括空格,tab,换行符等
\S 表示匹配任意一个非空白字符
\w 表示匹配任意一个文字字符,包括大小写字母,数字,下划线(判断用户名是否符合规范)
\W 表示匹配任意一个非文字字符
需要注意的是\w也会匹配中文字符,这时就要限制字符集为ASCII,具体代码为
p = re.compile('\..*',re.ASCII)
7.方括号“ [ ] ”匹配几个字符之一
方括号可以限定普通字符后的某字符,还可以直接给该字符限定范围
在方括号中,元字符也成为普通字符
如果在方括号中加入" ^ "字符,表示“非”,选取方括号中未选择到的元素
8.文本的起始结尾和单行多行模式
在方括号之外" ^ "表示文本的开头位置,加方括号表示只匹配一行文本的起始元素
Python中默认文本为一行,若要指定为多行模式,在re模块中加入re.M即可。(M表示MULTILINE)
同样的," $ "表示整个文本的结尾,用法与" ^ "相似。
9.小括号-组选择
在匹配中可能会出现要去掉结束符的情况,在这种情况下若想要去掉逗号则可以用" ( ) "将取到的元素分组。
可以看到在取出的组里已经没有逗号了。
同时可以提取一串数据,再在数据中通过提取自己需要的信息
在输出时可以看到分出的组以元组形式存储