regular expresion由一系列特定字符及其组合成的字符串,用来对目标字符串进行过滤操作。。

re相关知识点

python正则表达式库为re,用import re导入,在然后用re.compile(pattern,flag)将正则表达式字符串编译成正则表达式对象。在利用re提供的内置函数对字符串进行匹配,搜索,替换,切分和分组等操作。

flag常用的取值:
re.I 忽略大小写,re.X 忽略空格

import re
def check(string):
p=re.compile("^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$",re.I)
if p.match(string):
print("%s符合规则"%string)
else:
print("%s不符合规则"%string) st1='dflx@163.com'
st2='123456@qq.com'
check(st1)
check(st2)
dflx@163.com符合规则
123456@qq.com符合规则

re.match()从起始位置匹配
re.search()搜索整个字符串匹配,搜索成功返回起始位置和终止位置。
re.findall()以列表形式返回全部匹配的子串

>>> print(p.match('dAA00'))
None
>>> re.match('adf','sdadfg')
>>> re.search('adf','sdadfgadf')
<_sre.SRE_Match object; span=(2, 5), match='adf'>
>>> re.findall('adf','sdadfgadf')
['adf', 'adf']

切分
在实际应用中,不同数据源用不同的分隔符,可能是空格,制表符号,逗号等等。 利用正则表达式和split()函数,可以方便的分开。
re.split(pattern,string[,maxsplit])

.分隔开

>>> st='https:\\www.baidu.com'
>>> lt=re.split('\.',st)
>>> lt
['https:\\www', 'baidu', 'com']

逗号和空格分隔。

>>> st='df lx 23,77'
>>> li=re.split('[\s\,]',st)
>>> li
['df', 'lx', '23', '77']

替换,利用re库中sub()和subn()函数,可以将正则表达式所匹配的内容换成指定的字符串。
sub()返回的是替换后的字符串
subn()是以元组类型还回新字符串和替换的次数。

关键字和谐,re写的还是有点问题

下载简书交友专题的妹子图片.

我已经正则表达式,匹配了10篇文章,但是有些没有图片,有些
图片标签匹配不对,有时间在修改了. 准备遍历整过专题,下载所有图片,嘻嘻,还要判断性别,找出老乡.

import urllib.request
import urllib.parse
import re
import os def get_road(url0):
req=urllib.request.Request(url0)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36')
response=urllib.request.urlopen(req)
html=response.read().decode("utf-8")
pattern=re.compile(r'<a class="title" target="_blank" href="(.*?)"')
result=re.findall(pattern,html)
return result def get_jiaoyou_url(result,s0):
s=s0
return geturl(result,s) def gethtml(ur):
url=ur
req=urllib.request.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36')
response=urllib.request.urlopen(req)
html=response.read().decode("utf-8")
return html def getpath(html):
#reg=r'.*?\.png'
reg=r'<img data-original-src="(.*?\.png)"'
imgre=re.compile(reg)
urls=imgre.findall(html)
return urls def geturl(url,s):
urls=[s+str(i) for i in url]
for i in range(len(urls)):
print(urls[i])
print("url_length=",len(urls))
return urls def download(urls):
x=10
print("length=",len(urls))
for url in urls:
filename='/home/dflx/下载/jiaoyou_photo/'+str(x)+'.png'
urllib.request.urlretrieve(url,filename)
x+=1
print(x) def download_all(urls):
print(len(urls))
print('---------------')
index=0
while index<len(urls):
print(urls[index])
#download(urls[index])
index+=1
print("********") def main():
url0="https://www.jianshu.com/c/bd38bd199ec6"
#ur='https://www.jianshu.com/p/407dac18983c'
ur='https://www.jianshu.com/p/189d1b8101e6'
html=gethtml(ur)
path=getpath(html)
urls=geturl(path,'https:')
download(urls) """
result=get_road(url0)
allurls=get_jiaoyou_url(result,'https://www.jianshu.com')
download_all(allurls) """

下载的图片叉车图片

python正则表达式,以及应用[下载图片]的更多相关文章

  1. [python]非常小的下载图片脚本(非通用)

    说在最前面:这不是一个十分通用的下载图片脚本,只是根据我的一个小问题,为了减少我的重复性工作写的脚本. 问题 起因:我的这篇博文什么是真正的程序员浏览量超过了4000+. 问题来了:里面的图片我都是用 ...

  2. Python学习---网页爬虫[下载图片]

    爬虫学习--下载图片 1.主要用到了urllib和re库 2.利用urllib.urlopen()函数获得页面源代码 3.利用正则匹配图片类型,当然正则越准确,下载的越多 4.利用urllib.url ...

  3. python 协程并发下载图片

    1 import aiohttp 2 import asyncio 3 import time 4 5 async def dl_coroutine(session,url): 6 print('开始 ...

  4. python实现通过URL下载图片到本地服务器

    import os import urllib.request image_url = 'http://img.jingtuitui.com/759fa20190115144450401.jpg' f ...

  5. Python使用requests模块下载图片

    MySQL中事先保存好爬取到的图片链接地址. 然后使用多线程把图片下载到本地. # coding: utf-8 import MySQLdb import requests import os imp ...

  6. 利用Python实现从百度下载图片到本地磁盘

    import urllib.request import os import re url=r'http://image.baidu.com/search/index?tn=baiduimage&am ...

  7. python使用md5处理下载图片

    import urllib2 import hashlib opener = urllib2.build_opener() req = opener.open("http://avatar. ...

  8. 使用Requests+正则表达式爬取猫眼TOP100电影并保存到文件或MongoDB,并下载图片

    需要着重学习的地方:(1)爬取分页数据时,url链接的构建(2)保存json格式数据到文件,中文显示问题(3)线程池的使用(4)正则表达式的写法(5)根据图片url链接下载图片并保存(6)MongoD ...

  9. 从url下载图片--java与python实现方式比较

    从url下载图片--java与python实现方式比较 博客分类: 技术笔记小点滴 javapython图片下载  一.java的实现方式 首先读取图片 //方式一:直接根据url读取图片 priva ...

随机推荐

  1. autogen.sh脚本执行报错问题解决(针对DOMJudge平台搭建)

    错误信息:./autogen.sh: 9: ./autogen.sh: aclocal: not found 解决办法: $ sudo apt-get install automake $ sudo ...

  2. pl/sql连接远程oracle

    1.找到oracle安装程序下的网络配置助手 2.选中本地net服务,进行添加 3.输入远程oracle服务名 4.选中tcp协议 5.输入远程oracle的ip地址 6.在网络服务名处,随便输入一个 ...

  3. maven +IEDA+log4j

    一.pom.xml加入log4j的依赖包 <!-- 日志文件管理包 --><dependency>    <groupId>log4j</groupId> ...

  4. 在线扫描PDF JPG 图片上面文字

    在线扫描PDF JPG 图片上面文字

  5. C++成员函数指针的应用

     C++中,成员指针是最为复杂的语法结构.但在事件驱动和多线程应用中被广泛用于调用回叫函数.在多线程应用中,每个线程都通过指向成员函数的指针来调用该函数.在这样的应用中,如果不用成员指针,编程是非常困 ...

  6. python 标准库简介

    操作系统接口 os 模块提供了许多与操作系统交互的函数: >>> >>> import os >>> os.getcwd() # Return t ...

  7. Kubernetes学习之路(六)之创建K8S应用

    一.Deployment的概念 K8S本身并不提供网络的功能,所以需要借助第三方网络插件进行部署K8S中的网络,以打通各个节点中容器的互通. POD,是K8S中的一个逻辑概念,K8S管理的是POD,一 ...

  8. 关于js中直接获取后台的值,直接弹窗获取到的值

    js里获取后台的值,以前我都是后台通过jsp中的<input>EL表达式: 后台代码把传向页面的值放入request:request.setAttribute("Success& ...

  9. 自动色彩均衡(ACE)快速算法

    ACE算法源自retinex算法,可以调整图像的对比度,实现人眼色彩恒常性和亮度恒常性,通过差分来计算目标点与周围像素点的相对明暗关系来校正最终像素值,有很好的增强效果.但是计算复杂度非常高,本文提出 ...

  10. selenium无法正常运行 Chrome浏览器,cannot find Chrome binary的问题

    有些同学在运行selenium-chrome时会遇到这个问题, System.setProperty("webdriver.chrome.driver","files/c ...