Python爬虫抓取网页图片

本文通过python 来实现这样一个简单的爬虫功能,把我们想要的图片爬取到本地。

下面就看看如何使用python来实现这样一个功能。

# -*- coding: utf-8 -*-
import urllib
import re
import time
import os

#显示下载进度
def schedule(a,b,c):
    ‘‘‘‘‘
    a:已经下载的数据块
    b:数据块的大小
    c:远程文件的大小
   ‘‘‘
    per = 100.0 * a * b / c
    if per > 100 :
        per = 100
    print ‘%.2f%%‘ % per

def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

def downloadImg(html):
    reg = r‘src="(.+?\.jpg)" pic_ext‘
    imgre = re.compile(reg)
    imglist = re.findall(imgre, html)
    #定义文件夹的名字
    t = time.localtime(time.time())
    foldername = str(t.__getattribute__("tm_year"))+"-"+str(t.__getattribute__("tm_mon"))+"-"+str(t.__getattribute__("tm_mday"))
    picpath = ‘D:\\ImageDownload\\%s‘ % (foldername) #下载到的本地目录

    if not os.path.exists(picpath):   #路径不存在时创建一个
        os.makedirs(picpath)
    x = 0
    for imgurl in imglist:
        target = picpath+‘\\%s.jpg‘ % x
        print ‘Downloading image to location: ‘ + target + ‘\nurl=‘ + imgurl
        image = urllib.urlretrieve(imgurl, target, schedule)
        x += 1
    return image;

if __name__ == ‘__main__‘:
    print ‘‘‘            *************************************
            **      Welcome to use Spider      **
            **     Created on  2014-05-13      **
            **       @author: cruise           **
            *************************************‘‘‘

    html = getHtml("http://tieba.baidu.com/p/2460150866")

    downloadImg(html)
    print "Download has finished."

这里的核心是用到了urllib.urlretrieve()方法,直接将远程数据下载到本地。

下面我们再来看看 urllib 模块提供的 urlretrieve() 函数。urlretrieve() 方法直接将远程数据下载到本地。

1 >>> help(urllib.urlretrieve)
2 Help on function urlretrieve
in module urllib:
3  
4 urlretrieve(url, filename=None, reporthook=None,
data
=None)
  • 参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
  • 参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
  • 参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。

  通过一个for循环对获取的图片连接进行遍历,为了使图片的文件名看上去更规范,对其进行重命名,命名规则通过x变量加1。保存的位置默认为程序的存放目录。

在python shell中看到的信息如下:

程序运行完成,将在目录下看到下载到本地的文件。


Python爬虫抓取网页图片

时间: 2024-10-10 12:13:58

Python爬虫抓取网页图片的相关文章

Python3简单爬虫抓取网页图片

现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2),所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到大家,并希望大家批评指正. 1 import urllib.request 2 import re 3 import os 4 import urllib 5 #根据给定的网址来获取网页详细信息,得到的html就是网页的源代码 6 def getHtml(url): 7 page = urllib.r

Python爬虫 —— 抓取美女图片

代码如下: 1 #coding:utf-8 2 # import datetime 3 import requests 4 import os 5 import sys 6 from lxml import etree 7 import codecs 8 9 class Spider: 10 def __init__(self): 11 self.headers = {} 12 self.headers['User_Agent'] = 'Mozilla/5.0 (Windows NT 10.0;

Python爬虫-抓取网页数据并解析,写入本地文件

之前没学过Python,最近因一些个人需求,需要写个小爬虫,于是就搜罗了一批资料,看了一些别人写的代码,现在记录一下学习时爬过的坑. 如果您是从没有接触过Python的新手,又想迅速用Python写出一个爬虫,那么这篇文章比较适合你. 首先,我通过: https://mp.weixin.qq.com/s/ET9HP2n3905PxBy4ZLmZNw 找到了一份参考资料,它实现的功能是:爬取当当网Top 500本五星好评书籍 源代码可以在Github上找到: https://github.com/

Python爬虫爬取网页图片

没想到python是如此强大,令人着迷,以前看见图片总是一张一张复制粘贴,现在好了,学会python就可以用程序将一张张图片,保存下来. 今天逛贴吧看见好多美图,可是图片有点多,不想一张一张地复制粘贴,怎么办呢?办法总是有的,即便没有我们也可以创造一个办法. 下面就看看我今天写的程序: #coding=utf-8 #urllib模块提供了读取Web页面数据的接口 import urllib #re模块主要包含了正则表达式 import re #定义一个getHtml()函数 def getHtm

Python -- 网络编程 -- 抓取网页图片 -- 图虫网

字符串(str)编码成字节码(bytes),字节码解码为字符串 获取当前环境编码:sys.stdin.encoding url编码urllib.parse.quote() url解码urllib.parse.unquote() 列表去重:pages = list(set(pages)) 创建文件夹(可多级创建):os.makedirs(folder)  os.mkdir()只能单级创建 首先分析网页(图虫网)的URL规律: 根网页地址形如: http://tuchong.com/tags/人像/

python学习笔记-抓取网页图片脚本

初学者一枚,代码都是模仿网上的.亲测可用~ 运行脚本的前提是本机安装了httplib2模块 #!/usr/bin/python import os import re import string import urllib #author:reed #date:2014-05-14 def GetWebPictures(): url=raw_input('please input the website you want to download:') imgcontent=urllib.urlo

python 爬虫抓取心得

quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quote('要编码的字符串') query = urllib.quote(singername) url = 'http://music.baidu.com/search?key='+query response = urllib.urlopen(url) text = response.read()

python 爬虫抓取心得分享

/** author: insun title:python 爬虫抓取心得分享 blog:http://yxmhero1989.blog.163.com/blog/static/112157956201311821444664/ **/    0x1.urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quote('要编码的字符串') query = urllib.quote(singername) url = 'h

java 抓取网页图片

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86