python爬取花瓣网图片

环境:python3.5

今天拿抓取花瓣网上的美女图片来练练手

抓取图片,主要是要知道图片资源的url,知道了url后,就可以使用urllib.request.urlretrieve( )方法保存到本地了。

下面就直接贴代码吧,代码中有详细注释。

#coding:utf-8
'''
Created on 2016年8月16

@author: FangLiang
'''

import urllib.request
import re

#### 获取网页源码
def getHtml(url):
    page = urllib.request.urlopen(url)
    html = page.read().decode('utf-8')     #需要解码
    return html

#### 下载图片
def getImage(html):
    #### 获取HTML源码里面的app.page["pins"]部分,主要图片ID位于此部分
    app_page_pins_re = re.compile(r'app.page\\["pins"\\](.*?);',re.S)
    app_page_pins_str = re.findall(app_page_pins_re,html)[0]
    
    pin_id = r'"pin_id":(\d+)'
    pin_id_re = re.compile(pin_id)
    #### 获取图片ID,保存在列表中
    pin_id_list = re.findall(pin_id_re,app_page_pins_str)
    x = 0
    for pinid in pin_id_list:
        #### 获取跳转网页网址
        url_str = r'http://huaban.com/pins/%s/' % pinid
        #### 获取点击图片时弹出网页的源码
        pin_id_source = getHtml(url_str)
        #### 解析源码,获取原图片的网址
        img_url_re = re.compile('main-image.*?src="(.*?)"',re.S)
        img_url_list = re.findall(img_url_re,pin_id_source)
        try:
            img_url = 'http:' + img_url_list[0]
            #### 获取原图片的网址,以_fw658结尾的链接并不是原图片的链接,需要把_fw658去掉
            if '_fw658' in img_url:
                img_url = img_url[:-6]
            urllib.request.urlretrieve(img_url, '%s.jpg' % x)
            
        except:
            print("获取图片:%s失败,跳过,获取下一张。" % img_url)
            continue
        print("获取:%s成功!" % img_url)
        x += 1
        
    print("图片保存成功!")
if __name__ == '__main__':
    html = getHtml("http://huaban.com/favorite/beauty/")
    getImage(html)


输出:

获取:http://hbimg.b0.upaiyun.com/0a98b002ed3143f38d47d7b08cef3acd8c1e243c2b7d6f-liLblQ成功!
获取:http://hbimg.b0.upaiyun.com/165c232e1b0bef7a30559d979812635d3607a8aa113a48-UgQYrz成功!
获取:http://hbimg.b0.upaiyun.com/2b4a780a1e82b3f6d0c46de0556f128b300a5a5a21928-y2iZlC成功!
获取:http://hbimg.b0.upaiyun.com/b53449e1d1094d9179800de2ba61a3ad1f3a8d28cc03-IrJfvX成功!
获取:http://hbimg.b0.upaiyun.com/46a4175fe21a0cda3c88d499967acfb21b4fc92072fd5-HaPgcJ成功!
获取:http://hbimg.b0.upaiyun.com/b69cd0a013cf8df6d2b99f4ccc5dc4fea6def3879a2b-xt4fbL成功!
获取:http://hbimg.b0.upaiyun.com/e429f0fd656b0d7ea6a45aa36c5500c0d6a003a41d741-cC2aPc成功!
......
图片保存成功!


脚本所在目录就会出现很多图片



你可能感兴趣的:(python)