`
colorfire
  • 浏览: 33591 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python抓取图片

阅读更多
# -*- coding: cp936 -*-
import  urllib
import urllib2
import random
import os,sys
from sgmllib import SGMLParser

class URLLister(SGMLParser):
    '''获取html中的图片地址\url地址,装入list中'''
    def reset(self):
        SGMLParser.reset(self)
        self.img = []
        self.urls = []
    def start_img(self, attrs):
        img = [v for k, v in attrs if k=='src']
        if img:
            self.img.extend(img)
    def start_a(self, attrs):
        href = [v for k, v in attrs if k=='href']
        if href:
            self.urls.extend(href)


def get_docum(url):
    #url=url+'//'
    sock=urllib.urlopen(url)
    file=sock.read()
    sock.close()
    return file

def is_img(url):
    global imglenth
    request=urllib2.Request(url)
    opener=urllib2.build_opener()
    try:
        con=opener.open(request)
        Type=con.headers.dict['content-type'][:5] #判断链接返回的 content-type是不是图片。
        Length =int(con.headers.dict['content-length'])#判断图片大小
        if Length>imglenth:
            return Type
        else:
            return 0
    except:
        print sys.exc_info()[0],sys.exc_info()[1]  ##一般来说这样就足够了
        print '该图片无法在服务器找到或者图片地址无法识别!'
        print url
   
def get_file_name(ospath,imgname,num): 
    #name = 'P'+str(random.randint(10000000,99999999))
    #filepath = "%s%s.%s" % (ospath,name,(imgname.split('.'))[-1])
    #保留原文件名
    idx=imgname.rfind("/")
    filename=imgname
    if idx > -1:
        filename=imgname[idx+1:]
    filepath=ospath+'%d_'%num+filename
    print filepath
    return filepath                

def get_img(rq):
    parser = URLLister();    doc=get_docum(rq);    parser.feed(doc);    img = parser.img
    parser.close()
    for i in range(0,len(img)):
        if img[i][0:4]!='http':#处理绝对路径
            img[i]=rq+img[i]
    return img

def get_url(rq):
    parser = URLLister();    doc=get_docum(rq);    parser.feed(doc);    urls = parser.urls
    parser.close()
    for i in range(0,len(urls)):
        if urls[i][0:4] != 'http': #处理绝对路径
            urls[i] = rq+urls[i]
    return urls

def depth(url,dep,ospath):
    '''三个参数分别是
    url : 需要下载的网站地址
    dep :需要遍历的深度 
    ospath:图片下载的本地文件夹     
    '''
    global num
    if dep<=0:
        return 0
    else:
        img=get_img(url)
        for j in range(0,len(img)):
            if is_img(img[j]) == 'image':
                filepath = get_file_name(ospath,img[j],num+1);
                if (os.path.exists(filepath)):
                    pass
                try:
                    urllib.urlretrieve(img[j], filepath)
                    print '已经下载好第%d张图片'%(num+1)
                    num+=1
                except:
                    print '该图片无法下载或者图片地址无法识别!'
                    print img[j]
            else:
                pass
        urls=get_url(url)
        if len(urls)>0:
            for url in urls:
                depth(url,dep-1,ospath)
        else:
            return 0
        return 1


if __name__ == '__main__':
    imglenth = 1           #设置需要下载的图片大小。 
    num=0
    depth('http://tieba.baidu.com/f?kz=820731958',1,"E:\\python\\GetImageFromWeb\\img\\")   
    print '********************************我爬完了!!******************************************'

 

分享到:
评论

相关推荐

    Python 抓取图片(源码)

    Python 抓取百度贴吧里边的图片内容

    Python 抓取 图片 下载地址

    在Python编程领域,图片抓取是一项常见的任务,特别是在数据挖掘、网络爬虫和自动化测试等场景。本篇文章将深入探讨如何使用Python来抓取并下载网络上的图片。 首先,我们需要了解的是Python中的requests库,它是...

    python抓取网页图片

    以上就是Python抓取网页图片的核心知识点。在实际应用中,可能还需要考虑其他因素,比如反爬策略、多线程/异步处理提高效率、图片质量优化等。在`reptile`这个文件或项目中,很可能包含了实现这些功能的代码。通过...

    python抓取

    Python抓取,通常指的是使用Python进行网络数据抓取或网络爬虫的过程。Python因其丰富的库支持和简洁的语法,成为了网络爬虫开发的热门选择。本文将深入探讨Python抓取的相关知识点,包括基础概念、常用库、爬虫架构...

    python抓取网页图片.zip

    在Python编程语言中,"python抓取网页图片.zip"这个压缩包文件可能包含了一个示例项目,教我们如何使用Python来抓取网络上的图片。在Web抓取领域,这通常涉及到网络爬虫的编写,目的是自动下载网页中的图像资源。...

    python 抓取百度云分享数据,百度云最新接口抓取分享链接

    在这个主题中,我们将探讨如何使用Python来抓取百度云分享的数据,特别是利用百度云最新的API接口。这通常涉及到请求、解析HTML或JSON响应、处理验证码以及可能的反爬策略。 首先,要抓取百度云分享的数据,我们...

    python 抓取网页中所有图片

    python代码抓取网页中所有图片,用于网页中抓取所有图片信息。

    python抓取网页中图片并保存到本地

    在上篇文章给大家分享PHP源码批量抓取远程网页图片并保存到本地的实现方法,感兴趣的朋友可以点击了解详情。 #-*-coding:utf-8-*- import os import uuid import urllib2 import cookielib '''获取文件后缀名''' ...

    python 抓取一个网站所有图片并保存

    通过以上步骤,我们可以实现用Python抓取一个网站上的所有图片并保存到本地。这个过程涉及网络请求、HTML解析、文件操作等多个环节,是Python爬虫技术的综合应用。在实际项目中,可能还需要对代码进行优化,例如添加...

    python网络爬虫抓取图片

    利用python抓取网络图片的步骤: 1.根据给定的网址获取网页源代码 2.利用正则表达式把源代码中的图片地址过滤出来 3.根据过滤出来的图片地址下载网络图片

    Python自动抓取美女图片

    自动抓取美女图片,python爬虫

    python爬虫 抓取页面图片

    python爬虫 抓取页面图片python爬虫 抓取页面图片python爬虫 抓取页面图片

    python抓取并保存html页面时乱码问题的解决方法

    本篇文章将深入探讨Python抓取并保存HTML页面时乱码问题的解决方法。 首先,我们需要理解编码的基础知识。计算机内部存储和处理文本信息时使用的是二进制,而我们人类习惯的字符集如ASCII、UTF-8、GBK等则是为了将...

    ZQ.rar_python_抓取_抓取图片

    标题中的"ZQ.rar_python_抓取_抓取图片"暗示了这个压缩包包含了一个Python脚本(ZQ.py)和可能的一些结果图片,用于演示或记录如何使用Python进行网络图片的抓取过程。描述进一步确认了这个主题,即利用Python进行...

    python抓取网站的图片并下载到本地的方法

    Python是一种强大的编程语言,特别适合于网络数据抓取任务,包括从网站上抓取图片并保存到本地。在本文中,我们将深入探讨如何使用Python实现这个功能,主要涉及的库有`urllib`和`re`(正则表达式)。 首先,我们...

    Windows64下通过python调用海康SDK实现登入、预览、抓图、光学变倍、相机激活、区域聚焦、区域曝光功能

    在windous系统下Python实现海康相机登入、预览、抓图、光学变倍、相机激活、区域聚焦、区域曝光功能;linux系统下载相应的海康SDK,并将lib文件更换为相对应的库文件,同时将HCNetSDKCom文件夹拷贝出来(与lib文件夹...

    分享python爬虫抓取图片.pdf

    【Python爬虫抓取图片】知识点: Python爬虫是一种用于自动化网络数据抓取的技术,它可以帮助我们从网页上批量下载图片。Python有许多库支持这项任务,如BeautifulSoup、Scrapy和Requests-HTML等。其中,Requests库...

Global site tag (gtag.js) - Google Analytics