经过一段时间的基础知识铺垫,终于可以开始学习爬虫了,对,就是爬虫,可以爬东西的虫子!

爬虫基础,一个是Python,一个就是正则表达式了,当然,正则表达式在任何时候都不容忽视它的重要性!

接下来,我们从一个破解小密码来开始学习正则表达式

laodhfejzuwxyzixyzladivhwanxyzlovexyzawidhlxyzpythonxyzasdwia

是否破解出来了呢?

答案是: i love python

很简单:在上面一长串的字符串中,所有的密码关键字都是呈现"xyz...xyz"这个样子的,xyzixyz中可以提取出第一个密码i,依次类推可以破解该密码

好了,小游戏哈,不必太过当真,接下来开始真正的学习正则表达式

1、正则表达式的常用符号

  .  可以匹配任意字符,换行符\n除外

  *  匹配前一个字符0次或无限次

  ? 匹配前一个字符0次或1次

  .* 贪心算法

  .*? 非贪心算法

  ()  括号内的数据作为结果返回

2、正则表达式的常用方法

  findall:匹配所有符合规律的内容,返回包含结果的列表

  search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象(object)

  sub:替换符合规律的内容,返回替换后的值

#coding:utf-8
#导入正则表达式
import re
#刚才我们需要破译的密码
secret_code="laodhfejzuwxyzixyzladivhwanxyzlovexyzawidhlxyzpythonxyzasdwia"
#.的使用,代表占位符
a="xz123xs"
b=re.findall('x.', a)
print b #输出结果为['xz', 'xs'],在a这个字符串中找到x和紧跟其后的一个字符# *的使用
a="xyxy123"
b=re.findall('x*',a)
print b #输出结果为['x', '', 'x', '', '', '', '', ''],因为*可以表示0个或多个,找到x的位置就显示为x,没有找到就为空# ?的使用
a="xy123"
b=re.findall('x?',a)
print b #输出结果为['x', '', '', '', '', '']'''上面的只需简单了解,下面这种重点掌握'''
# .*的使用
b=re.findall('xyz.*xyz',secret_code)#从顶端的密码中查找匹配
print b #输出结果为['xyzixyzladivhwanxyzlovexyzawidhlxyzpythonxyz']贪心算法,从第一个xyz开始到最后一个xyz结束能找到多少找多少
c=re.findall("xyz.*?xyz",secret_code)
print c #输出结果为['xyzixyz', 'xyzlovexyz', 'xyzpythonxyz'],非贪心算法,找尽可能多的满足条件的组合
d=re.findall("xyz(.*?)xyz",secret_code)
print d #输出结果为['i', 'love', 'python'],我们需要的内容用括号包裹起来#接下来我们把密码分开两行来显示
secret_code2='''laodhfejzuwxyzhello
xyzidhlxyzpythonxyzasdwia'''
e=re.findall("xyz(.*?)xyz",secret_code2)
print e #输出结果为['idhl'],并不是我们想象中的hello world,原因是hello后面有一个换行符,正则表达式无法匹配,第一行和第二行无法衔接来查找匹配正则表达式
f=re.findall("xyz(.*?)xyz",secret_code2,re.S)
print f #输出结果为['hello\n', 'python'],其中\n换行符就是刚才无法匹配的原因#findall和search的区别
s2="asdfxxixx123xxlovexxdfd"
a=re.search('xx(.*?)xx123xx(.*?)xx',s2).group(1)
print a #输出结果为i
a=re.search('xx(.*?)xx123xx(.*?)xx',s2).group(2)
print a #输出结果为love  group后面的数字带面前面括号中的值

a=re.findall('xx(.*?)xx123xx(.*?)xx',s2)
print a #输出结果为[('i', 'love')],两个括号中的内容在一个元组中,只有这个字符串中有两个或者以上地方符合正则表达式,才会增加新的元组#sub的使用
s="123abcssfasdfas123"
output=re.sub('123(.*?)123','i love you',s)
print output #输出结果为i love you,找到符合正则表达式的内容,将其整体换为新的内容

   不同的导入方法

  

#coding:utf-8
#导入正则表达式
#import re
from re import *
#刚才我们需要破译的密码
secret_code="laodhfejzuwxyzixyzladivhwanxyzlovexyzawidhlxyzpythonxyzasdwia"
info=findall('xyz(.*?)xyz',secret_code,S)
for each in info:print each
'''输出结果为:ilovepython
'''

转载于:https://www.cnblogs.com/jiyongxin/p/6957997.html

Python-14:爬虫之正则表达式1相关推荐

  1. Python网络爬虫和正则表达式学习总结

    阅读目录 1.利用urllib2对指定的URL抓取网页内容 2. 使用正则表达式过滤抓取到的网页信息 2.1 正则表达式介绍 2.2 Python的re模块 2.3 Python正则表达式汇总 以前在 ...

  2. [Python] 网络爬虫和正则表达式学习总结

    以前在学校做科研都是直接利用网上共享的一些数据,就像我们经常说的dataset.beachmark等等.但是,对于实际的工业需求来说,爬取网络的数据是必须的并且是首要的.最近在国内一家互联网公司实习, ...

  3. Python网络爬虫进阶+正则表达式

    1 HTML基础 1.1 HTML结构 1.2 HTML各标签结构 1.3 HTML样式 2.正则表达式 2.1 元字符 2.1.1 元字符之. ^ $ * + ? { } 2.1.2 元字符之字符集 ...

  4. 《Python网络爬虫从入门到实践 第2版》第14章 爬虫实践一:维基百科

    第14章 爬虫实践一:维基百科 "是骡子是马,拉出来遛遛".我们已经将Python网络爬虫的技术系统地学习完了,后面几个章节开始进入实践环节.每一章都会使用之前学习的技术,通过实践 ...

  5. Python 网络爬虫笔记6 -- 正则表达式

    Python 网络爬虫笔记6 – 正则表达式 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Python网 ...

  6. 第14章 Python网络爬虫

    爬虫简介 爬取网页的基础知识 HTML与JavaScript基础 爬虫的合法性 爬取网页的urllib和requests库 beautifulsoup4库 案例 爬虫简介 • 网页爬取,就是把URL地 ...

  7. 05、Python爬虫之正则表达式常用方法(超全)

    文章目录 前言 一.search()函数 二.match()函数 三.compile()函数 四.findall()函数 五.sub()函数 六.subn()函数 七.split()函数 八.补充说明 ...

  8. python网络爬虫之解析网页的正则表达式(爬取4k动漫图片)[三]

    目录 前言 一.正则表达式的学习 1.正则表达式的匹配工具 2.正则表达式的样式 3.正则表达式的案例 二.爬取网页图片 1.分析网页 2.获取数据 爬取妹子网的案例 后记 前言 hello,大家好 ...

  9. python正则表达式爬虫_Python爬虫之正则表达式一些常用方法

    正则表达式与Python 在了解了正则表达式的相关知识之后,开始查看Python当前如何通过使用re模块来支持正则表达式,re模块在很早之前就引入了,用于替换那些已过时的regex模块和regsub模 ...

  10. 精通python网络爬虫-精通Python网络爬虫 PDF 高清版

    给大家带来的一篇关于Python爬虫相关的电子书资源,介绍了关于Python.网络爬虫.核心技术.框架.项目实战方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小108.6 MB,韦玮编写 ...

最新文章

  1. 免费送书啦!玩转3D视界,这本书带你感知立体的世界
  2. ubuntu 安装mysql5.6
  3. 如何系统的自学python 知乎-应该怎样系统的学习Python标准库?
  4. 洛谷【p2817】 宋荣子的城堡
  5. CORS error 状态码451
  6. python流量实时统计_Python实现获取nginx服务器ip及流量统计信息功能示例
  7. xampp apache 无法启动
  8. java初始化配置_java – 初始化没有XML配置的数据库,但使用@Configuration
  9. 9102年,曝光这几个高质量的公众号,年薪7位数!
  10. tcp/ip协议listen函数中backlog参数的含义
  11. itextpdf 数字签名
  12. 技术点:使用vue和element实现地图选点功能
  13. OpenGL PowerVR SDK 编译:Could NOT find X11 (missing: X11_X11_INCLUDE_PATH X11_X11_LIB)
  14. python/Matplotlib绘制复变函数图像
  15. macbook 唤醒后不能输入密码
  16. unity shader实现中枪散红效果,(参考别人算法)
  17. HDevelop实现图片中局部图形识别标记
  18. 阳光/海浪/沙滩/美女/泳装——51CTO.com两周年出游
  19. 下载与安装nexus3
  20. Git 命令之Git clean

热门文章

  1. 同一张表查询一个字段为空则取另一个字段
  2. 透明小电视上线——GitHub 热点速览 v.21.05
  3. 如何将多行单元格数据转变成一行?这个Excel技巧你一定不知道!
  4. EOS - 常用命令(获取余额、创建账户、发送EOS Token)
  5. docker基础用法及镜像和容器的常用命令大全
  6. 毕业三年,初心你忘记了吗?
  7. SpringCloud动态获取yml文件中的配置
  8. Android多进程从头讲到尾,Android开发知识点
  9. 用python画好看的圣诞树
  10. 喜串(二分递归+传递下标)