posted in Python 

download the picture by auto

Table of Contents

1 Intro

简单介绍一下,最近比较忙,一些文章Notes在evernote里,没时间整理写blog,毕竟 是从note的三言两语整理出Blog还是需要时间的,而且也不是cnblog那种直接就可以 粘贴发布的。 这个是前一段无聊写的一个从内部bbs相亲版块爬图片的小程序,用来练习。很简单的说明 了爬图片的基本远离: 找到开始爬的网址,制定规则,拿到图片的url,然后下载,值得注意的是我这边用的都是 最简单的,以后如果可以完善的方向有以下:

  1. 可以添加多线程
  2. 可以改进未必只是拿到clear的网址,有些网站是用AJAX,但是我觉得也是可以模拟请 求,以前看过某大牛说过,web前端是没有安全性可言的。
  3. 关于拿到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")

Author: zhang led

Created: 2013-09-15 Sun 17:47

Emacs 23.4.1 (Org mode 8.0.7)

Validate XHTML 1.0