download the picture by auto
download the picture by auto
1 Intro
简单介绍一下,最近比较忙,一些文章Notes在evernote里,没时间整理写blog,毕竟 是从note的三言两语整理出Blog还是需要时间的,而且也不是cnblog那种直接就可以 粘贴发布的。 这个是前一段无聊写的一个从内部bbs相亲版块爬图片的小程序,用来练习。很简单的说明 了爬图片的基本远离: 找到开始爬的网址,制定规则,拿到图片的url,然后下载,值得注意的是我这边用的都是 最简单的,以后如果可以完善的方向有以下:
- 可以添加多线程
- 可以改进未必只是拿到clear的网址,有些网站是用AJAX,但是我觉得也是可以模拟请 求,以前看过某大牛说过,web前端是没有安全性可言的。
- 关于拿到html之后,进行清洗,我使用的是最简单的正则,其实有比较professional 的模块,beautiful soap之类的。
2 Code
#!/usr/bin/env python # -*- coding:utf-8 -*- # used for the clear url address import urllib import urllib2 import os import re import sys from threading import Thread import time import random import hashlib #获取html def gethtml(url): page = urllib2.urlopen(url) html = page.read() return html #获取图片URL def getImg(html): reg = r'file="(attachments/.*?.jpg)"' imgre = re.compile(reg) imglist = re.findall(imgre,html) print "imglist:",imglist return imglist #下载文件,保存文件 def downloadFile(urllist): x = 0 filepath = "f:\Pythontest1" # if os.path.exists(filepath) is True: # filepath += "1" # os.mkdir(filepath) for imgurl in urllist: temppath = filepath + "\%s.jpg" %x urllib.urlretrieve("http://websvr03.qd.lucent.com/" + imgurl,temppath) x += 1 if __name__ == "__main__": html = gethtml("http://websvr03.qd.lucent.com/viewthread.php?tid=23737&extra=page%3D1") print html print r"----------------->>获取HTML完毕".decode("utf-8").encode("gbk") #解决CMD控制台上中文乱码的问题 urllist = getImg(html) print r"------------------>>分析URL完毕".decode("utf-8").encode("gbk") downloadFile(urllist) print r"------------------->>文件下载完毕".decode("utf-8").encode("gbk")