python爬虫之正则表达式-1

基础知识了解下先,各位:

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,找到符合正则表达式的内容,将其整体换为新的内容


【为什么学爬虫?】        1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到!        2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是:络请求:模拟浏览器的行为从上抓取数据。数据解析:将请求下来的数据进行过滤,提取我们想要的数据。数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在取的过程中可能会发生被反、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是:爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态爬虫、字体反识别等。Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。通过爬虫进阶的知识点我们能应付大量的反站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速取数据。 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求!【课程服务】 专属付费社群+定期答疑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值