抓取MM图片的爬虫

刚学python,试着写了个非常简单的爬虫,爬一些MM的图片下来。记录一下

#coding=utf-8
import urllib,time
import re
global x
x=0
def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

def getImg(html):
    global x
    reg = r'original=\'(.+?.jpg)\' width' 
    imgre = re.compile(reg)
    imglist = re.findall(imgre,html)
    local = r'D:\pic' '\\' '%s.jpg' #注意表示方法,用字符串合并方法表示,不然最后一个\不好弄
    i=0
    for imgurl in imglist:
        i+=1
        print 'Downloading---',i
        urllib.urlretrieve(imgurl,local % x)
        x+=1
    print i
print u"""
----------------------------
    程序:图片爬虫
    作者:hinet
    版本:v 1.0
    日期:2014-8-11
    语言:Python 2.7
    文件:D:/pic
----------------------------
"""
for i in range(1,50):
    url = "http://www.baozhao.me/p/%d.html" % i
    html = getHtml(url)
    print getImg(html)

记录几个小问题:

  1.文件保存到D:\pic\ 下,开始怎么都表现不出来最后那个\,最后使用了代码中的这个方法,合并了两个字符串才形成这个文件夹路径,以后再想更好的办法。当然前面加上r设置为原始字符串也是为了防止文件名出现问题,比如说 local = 'D:\npic' 这就出问题了,print local 就会直接把\n当成换行了。

 local = r'D:\pic' '\\' '%s.jpg'

  2.re.findall函数返回一个list,使用urlretrieve进行循环下载,文件名用0,1,2,3……jpg。

这个版本还有缺陷,后期应该引入线程,还得解决图片链接问题,让抓取更有效率。

posted @ 2014-08-12 17:06  hi_net  阅读(246)  评论(0编辑  收藏  举报