一,正则表达式

  正则表达式是对字符串操作的一种逻辑公式,我们一般使用正则表达式对字符串进行匹配和过滤,使用正则的优缺点,我们可以去http://tool.chinaz.com/regex/进行测试。

  优点:灵活,功能性强,逻辑性强

  缺点:上手难,一旦上手,使用起来很方便

  正则表达式由普通字符和元字符组成,普通字符包含大小写字母,数字,在匹配普通字符的时候我们直接写就好,比如‘abc’匹配的就是‘abc’。元字符才是正则表达式的灵魂。

  1,字符组:字符组很简单,用[]括起来,在[]中出现的内容会被匹配,例如[abc]匹配a或b或c,如果字符组中的内容过多还可以使用-,例如[a-z]匹配a到z之间的所有字母,[0-9]匹配所有阿拉伯数字

  2,简单元字符

  

  

  3,量词

  

  4,惰性匹配和贪婪匹配

  

  

  5,分组

  

  6,转义

  

二,re模块

  

  

  

  

  

三,实例一,用re和urllib爬电影下载地址,我爬的是电影天堂小片网的电影(中间一大段if,elif只是排除编码有问题电影) 

from urllib.request import urlopen
import re
for i in range(1,302):
if i ==1:
url='https://www.dy2018.com/html/gndy/dyzz/index.html'
else:
url='https://www.dy2018.com/html/gndy/dyzz/index_%s.html'%i
print(url)
f1 = open('move.txt', mode='a', encoding='utf-8')
f1.write(url + '\n')
f1.close()
content=urlopen(url).read().decode('gbk')
if i==51:
obj = re.compile(r'<td height="20" style="padding-left:3px">&nbsp;</td>.*?<td height="26">.*?a href="/(?P<adress>.*?)".*?">(?P<name>.*?)</a>', re.S)
else:
obj = re.compile(r'<td height="26">.*?a href="/(?P<adress>.*?)".*?">(?P<name>.*?)</', re.S)
ss=obj.finditer(content)
for el in ss:
if el.group('adress')=='i/91900.html' or el.group('adress')=='html/gndy/dyzz/20130913/91826.html' :
continue
elif el.group('adress')=='html/gndy/dyzz/20130131/41375.html'or el.group('adress')=='html/gndy/dyzz/20130903/91759.html':
continue
elif el.group('adress')=='html/gndy/dyzz/20130908/91797.html'or el.group('adress')=='html/gndy/dyzz/20120623/38354.html':
continue
elif el.group('adress')=='html/gndy/dyzz/20110219/30940.html'or el.group('adress')=='html/gndy/dyzz/20110112/30354.html':
continue
elif el.group('adress')=='html/gndy/dyzz/20110109/30300.html'or el.group('adress')=='html/gndy/dyzz/20110107/30267.html':
continue
elif el.group('adress')=='html/gndy/dyzz/20101231/30152.html'or el.group('adress')=='html/gndy/dyzz/20101231/30150.html':
continue
elif el.group('adress')=='html/gndy/dyzz/20101221/29988.html'or el.group('adress')=='html/gndy/dyzz/20101215/29886.html':
continue
elif el.group('adress')=='html/gndy/dyzz/20101209/29780.html'or el.group('adress')=='html/gndy/dyzz/20101208/29768.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20101101/29127.html'or el.group('adress') == 'html/gndy/dyzz/20101027/29031.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20101019/28883.html'or el.group('adress') == 'html/gndy/dyzz/20100919/28321.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20100909/28122.html'or el.group('adress') == 'html/gndy/dyzz/20100828/27899.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20100820/27742.html'or el.group('adress') == 'html/gndy/dyzz/20100726/27308.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20100620/26683.html'or el.group('adress') == 'html/gndy/dyzz/20100613/26564.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20100428/25809.html'or el.group('adress') == 'html/gndy/dyzz/20100116/24050.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20100110/23933.html'or el.group('adress') == 'html/gndy/dyzz/20100103/23790.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20091104/22691.html'or el.group('adress') == 'html/gndy/dyzz/20090423/18292.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20090308/17370.html'or el.group('adress') == 'html/gndy/dyzz/20090303/17285.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20090308/17377.html'or el.group('adress') == 'html/gndy/dyzz/20090113/16496.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20081221/16079.html'or el.group('adress') == 'html/gndy/dyzz/20081215/15964.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20081008/14637.html'or el.group('adress') == 'html/gndy/dyzz/20080916/14200.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20080905/13985.html'or el.group('adress') == 'html/gndy/dyzz/20080119/9339.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20071213/8253.html'or el.group('adress') == 'html/gndy/dyzz/20071125/7635.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20071025/6879.html'or el.group('adress') == 'html/gndy/dyzz/20070902/5424.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20070824/5143.html'or el.group('adress') == 'html/gndy/dyzz/20070823/5109.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20070823/5088.html'or el.group('adress') == 'html/gndy/dyzz/20070806/4621.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20070805/4617.html'or el.group('adress') == 'html/gndy/dyzz/20070805/4611.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20070727/4333.html'or el.group('adress') == 'html/gndy/dyzz/20070726/4301.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20070716/4023.html'or el.group('adress') == 'html/gndy/dyzz/20070712/3862.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20070617/3072.html'or el.group('adress') == 'html/gndy/dyzz/20070615/3019.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20070527/2418.html'or el.group('adress') == 'html/gndy/dyzz/20070425/1672.html':
continue
elif el.group('adress') == 'html/gndy/dyzz/20070416/1478.html'or el.group('adress') == 'html/gndy/dyzz/20070412/1399.html':
continue
d1={}
d1['name']=el.group('name')
url1='https://www.dy2018.com/'+el.group('adress')
content1 = urlopen(url1).read().decode('gbk')
obj1=re.compile(r'下载地址.*?<a href="(?P<adress1>.*?)">',re.S)
ss1=obj1.search(content1)
d1['adress']=ss1.group('adress1')
f1=open('move.txt',mode='a',encoding='utf-8')
f1.write(str(d1)+'\n')
f1.close()
四,用re和urllib爬维密图片
import re
from urllib.request import urlopen,urlretrieve
for n in range(1,5):
if n ==1:
url2 = 'https://stock.tuchong.com/topic?topicId=49282'
else:
url2='https://stock.tuchong.com/topic?topicId=49282&page=%s&count=100'%n
content=urlopen(url2).read().decode('utf-8')
obj=re.compile(r'"imageId":"(?P<bianhao>.*?)"',re.S)
ss=obj.finditer(content)
i=(n-1)*100+1
for el in ss:
num=el.group('bianhao')
if num=='525558981780570122'or num=='525569719200382978':
continue
elif num=='525589673617915918'or num=='525563551629443081':
continue
elif num == '525571411419332618'or num == '525585163906711562':
continue
elif num == '525554334627135503'or num == '525554274497593347':
continue
elif num == '525555872228048910'or num == '525555889405689865':
continue
elif num == '525566472207728651'or num == '525569650482741255':
continue
elif num == '525571420010053640'or num == '525571196669132802':
continue
elif num == '525571239618281484'or num == '525575964084666381':
continue
elif num == '525577347064528914'or num == '525580594059804675':
continue
elif num == '525592946387451916'or num == '525602292234190873':
continue
elif num == '525551036092645412'or num == '525552685360087057':
continue
elif num == '525554300266217477'or num == '525555657477062662':
continue
elif num == '525557349694570506'or num == '525557418413522955':
continue
elif num == '525575757924401164'or num == '525585146722910211':
continue
elif num == '525591194036862980'or num == '525594604244828160':
continue
elif num == '525619248767172615'or num == '525546397526392859':
continue
elif num == '525547952305733639'or num == '525549618751864836':
continue
elif num == '525552539333034011'or num == '525560631049584650':
continue
elif num == '525561910952460294'or num == '525577252573020167':
continue
elif num == '525577390015905802'or num == '525578919019806730':
continue
elif num == '525589845421064206'or num == '525600746043736066':
continue
elif num == '525600746046750729'or num == '525600539888320533':
continue
elif num == '525636059267465227'or num == '525551070454611970':
continue
elif num == '525551173533827166'or num == '525552693952643113':
continue
elif num == '525557461366341633'or num == '525557169308041219':
continue
elif num == '525558818575613969'or num == '525559024730243078':
continue
elif num == '525560596692074509'or num == '525563345468391437':
continue
elif num == '525575809462435842'or num == '525578901843083269':
continue
elif num == '525580405077442575'or num == '525582148835344441':
continue
elif num == '525585146721337349'or num == '525549532855926790':
continue
elif num == '525552711133822979'or num == '525560338990235661':
continue
elif num == '525565097818193935'or num == '525566489386811399':
continue
elif num == '525569684840644622'or num == '525571239620640780':
continue
elif num == '525571316927692806'or num == '525572725675917316':
continue
elif num == '525573017733693460'or num == '525574254687682562':
continue
elif num == '525574538153689102'or num == '525575869593550849':
continue
elif num == '525594295007182858'or num == '525596004400234497':
continue
elif num == '525608305186177028'or num == '525650120992096265':
continue
elif num == '525564900245504013':
continue
s='http://p3.pstatp.com/weili/ms/%s.webp'%num
print(s)
ss=urlretrieve(s,'维密\%s.jpg'%i)
i += 1
												

正则表达式,re模块的更多相关文章

  1. python正则表达式Re模块备忘录

    title: python正则表达式Re模块备忘录 date: 2019/1/31 18:17:08 toc: true --- python正则表达式Re模块备忘录 备忘录 python中的数量词为 ...

  2. python 正则表达式re模块

    #####################总结##############    优点:  灵活, 功能性强, 逻辑性强.               缺点:  上手难,旦上手, 会爱上这个东西    ...

  3. python基础之正则表达式 re模块

    内容梗概: 1. 正则表达式 2. re模块的使⽤ 3. 一堆练习正则表达式是对字符串串操作的一种逻辑公式. 我们一般使用正则表达式对字符串进行匹配和过滤.使用正则的优缺点: 优点: 灵活,功能性强, ...

  4. python记录_day23 正则表达式 re模块

    一. 正则表达式 使用python的re模块之前应该对正则表达式有一定的了解 正则表达式是对字符串操作的一种逻辑公式.我们一般使用正则表达式对字符串进行匹配和过滤. 正则的优缺点: 优点:灵活, 功能 ...

  5. Python面试题之Python正则表达式re模块

    一.Python正则表达式re模块简介 正则表达式,是一门相对通用的语言.简单说就是:用一系列的规则语法,去匹配,查找,替换等操作字符串,以达到对应的目的:此套规则,就是所谓的正则表达式.各个语言都有 ...

  6. Python 正则表达式——re模块介绍

    Python 正则表达式 re 模块使 Python 语言拥有全部的正则表达式功能,re模块常用方法: re.match函数 re.match从字符串的起始位置匹配,如果起始位置匹配不成功,则matc ...

  7. 学习django之正则表达式re模块

    re(regular expression)模块 正则表达式(regular expression)主要功能是从字符串(string)中通过特定的模式(pattern),搜索想要找到的内容. 一.re ...

  8. 正则表达式re模块

    正则表达式模块re 1. 正则简介 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言, (在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被 编译 ...

  9. python正则表达式——re模块

    http://blog.csdn.net/zm2714/article/details/8016323 re模块 开始使用re Python通过re模块提供对正则表达式的支持.使用re的一般步骤是先将 ...

  10. Python自动化运维之8、正则表达式re模块

    re模块 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串,在文本处理方面功能非常强大,也经常用作爬虫,来爬取特定内容,Python本身不支持正则,但是通过导入re模块,Python ...

随机推荐

  1. 20175316盛茂淞 2018-2019-2 《Java程序设计》第5周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第5周学习总结 教材学习内容总结 第六章 接口与实现. 何谓接口 接口:书上没有明确地给出接口的定义,我理解的接口就是一 ...

  2. javascript day 02

    js-day02 1.数据类型转换2.函数3.分支结构*******************************1.数据类型转换 数据类型:number,string,boolean,null,u ...

  3. 【转】nc 使用说明

    netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据.通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它.使用netcat命令所能完成的事情令人惊讶. netcat所做的 ...

  4. mui 页面提示:Unable to preventDefault inside passive

    页面提示: 点击该事件:页面提示:[8mui.min.js:7 [Intervention] Unable to preventDefault inside passive event listene ...

  5. python基本数据类型之字符串(四)

    python基本数据类型之字符串(四) 判断方法 python中有一类用来判断字符串形式的方法,该类方法有两个特点:(1)方法名都是is开头(除了startswith和endswith):(2)返回值 ...

  6. UNIGUI与UNIURLFRAME的互动

    UniSession.JSCode('name_'+MainForm.UniURLFrame1.name+'_'+MainForm.UniURLFrame1.JSName+'.myinput4.inn ...

  7. 了解Java基本数据类型的取值范围

    拿byte类型做栗子 一个字节是8位二进制数,然后最高位会用来作为符号位.正数计算机是存的原码,负数是存的补码. 也就说byte正数最大是0111 1111,转化为十进制是:127(这就是byte的上 ...

  8. JS禁用键盘浏览器退格键

    我们在真实的项目开发中经常会使用JS 对键盘上的一些按键进行禁用,常见的比如说退格键(backspace/ 后退键),我在一个项目中就遇到过在页面编辑的时候禁用掉退格键,因为退格键会发生页面后退,这样 ...

  9. web API简介(三):客户端储存之Web Storage API

    概述 前篇:web API简介(二):客户端储存之document.cookie API 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据. W ...

  10. C++ vector 容器浅析

    一.什么是vector? 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container).跟任意其它类型容器一样,它能够存放各种类型的对象.可以简单的认为,向量是一个能 ...