您的位置:首页 > 编程语言 > Python开发

好玩系列之python爬取图片

2017-07-20 23:27 288 查看
环境:python3.6+PyCharm2017

主要模块:re(正则表达式)、urllib.request(读取web页面数据接口)

需要爬去图片的地址:http://699pic.com/zhuanti/hangpai.html



实现效果:



1、直接先上代码

#urllib模块提供了读取Web页面数据的接口
import urllib.request
#re模块主要包含了正则表达式
import re
#定义一个getHtml()函数
def get_Html(url):
page = urllib.request.urlopen(url) # urllib.urlopen()方法用于打开一个URL地址
html = page.read() # read()方法用于读取URL上的数据,返回的是byte
# print(type(html))
html = html.decode('utf-8')
with open("file", 'w',encoding='utf-8') as new:# 将html保存为file文件
new.write(html)
return html

def get_Image(html):
reg = r'data-original="(http.*?.jpg)"'# 正则表达式,得到图片地址
#匹配data-original="http://img95.699pic.com/photo/50013/7645.jpg_wh300.jpg"
print(reg)
imgre = re.compile(reg) # re.compile() 可以把正则表达式编译成一个正则表达式对象.
imglist = re.findall(imgre, html) # re.findall() 方法读取html 中包含 imgre(正则表达式)的数据
x = 0
for imgurl in imglist:
#把筛选的图片地址通过for循环遍历并保存到本地
urllib.request.urlretrieve(imgurl, 'E:\pytupian\%s.jpg' % x)
#核心是urllib.urlretrieve()方法,直接将远程数据下载到本地,图片通过x依次递增命名
x += 1

html = get_Html("http://699pic.com/zhuanti/hangpai.html")
get_Image(html)

2、简单分析和提示
其实非常简单就是两个函数:get_html(得到html文件)、get_Image(下载文件)

第一步:用浏览器查看源代码,找到图片地址,一般以“.jpg”结尾,比如我爬的网址源代码



第二步:就是用正则匹配这个地址

这里教大家一个小秘诀,大家都知道正则表达式比较绕,有一个文本工具Notepad++,查找一下,简单方便!



第三步:就是去这个地址下载下来就好

其实非常简单就是两个函数:get_html(得到html文件)、get_Image(下载图片)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息