python3爬虫(一)爬取网页全部图片

命题

交互式输入网址,爬取网页中全部png图片。
若想爬取其他图片,只改动正则表达式即可

思路

  1. 读取网页中源码
  2. 根据网页源码制定正则表达式,进行匹配
  3. 存取图片至本地
  4. 交互模式输入网址,若不输入则按默认网址爬取(http://findicons.com/pack/2787/beautiful_flat_icons)

知识点

  1. 根据源码编写正则表达式:reg=r’src="(.+?.png)" alt’
    python3爬虫(一)爬取网页全部图片_第1张图片
  2. 为提升速度,进行编译匹配
    imgre=re.compile(reg)
    imglist=imgre.findall(html)

源码

import urllib.request
import re
import os
import urllib
#打开网页,读取源码
def getHtml(url):
    page=urllib.request.urlopen(url)
    html=page.read()
    return html.decode('UTF-8')
#正则表达式,定位所有图片
def getImag(html):
    reg=r'src="(.+?\.png)" alt'
    imgre=re.compile(reg)#编译一下,提升运行速度
    imglist=imgre.findall(html)#匹配
#指定位置存放
    x=0
    path="e:\\test"
    if not os.path.isdir(path):
        os.makedirs(path)
    paths=path+"\\"
    for imgurl in imglist:
        urllib.request.urlretrieve(imgurl,'{}{}.jpg'.format(paths,x))#以第二个名字下载链接
        x=x+1
    return imglist
#变量
print(u'---------网页抓取图片----------')
print("请输入URL地址")
url=input()
if url:
    pass
else:
    print(u'---------没有输入地址正在使用默认地址----------')
    url='http://findicons.com/pack/2787/beautiful_flat_icons'
print(u'----------正在获取图片---------')
html_code=getHtml(url)
print(u'----------正在下载图片---------')
print(getImag(html_code))
print(u'----------下载成功---------')
input('Press Enter to exit')

运行结果 python3爬虫(一)爬取网页全部图片_第2张图片

你可能感兴趣的:(爬虫)