python-33:极视界爬虫V-0.2

来看看修改好的新的代码

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = '217小月月坑'

'''
网页跳转,相册图片下载
下载大图片
'''

import urllib
import urllib2
import re
import os

# 极视界主页
home_url = 'http://product.yesky.com/more/506001_31372_photograph_1.shtml'
user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0'
headers = {'User-Agent':user_agent}

try:
    home_request = urllib2.Request(home_url,headers=headers)
    home_response = urllib2.urlopen(home_request)
    home_conents = home_response.read().decode("gbk")
    # 使用RE在主页源码获取相册的网址和相册名字
    home_pattern = re.compile(r'<dt><a href="(.*?)" title="(.*?)"',re.S)
    # 返回存有相册的网址的列表
    album_urls = re.findall(home_pattern,home_conents)
    for album_url in album_urls:
        print album_url[0],album_url[1]
        # 以相册名字创建文件夹
        path = r'/home/ym/test/'+album_url[1]
        os.mkdir(path)
        # 传入相册网址
        album_response = urllib2.urlopen(album_url[0])
        album_conents = album_response.read().decode("gbk")
        album_pattern = re.compile(r'<li >.*?<a href="(.*?)".*?</li>',re.S)
        photo_urls = re.findall(album_pattern,album_conents)
        i = 1
        print '正在下载'+album_url[1]+'相册里的图片'
        for photo_url in photo_urls:
            photo_response = urllib2.urlopen(photo_url)
            photo_conents = photo_response.read().decode("gbk")
            photo_pattern = re.compile(r'class="effect".*?<img src="(.*?)"',re.S)
            img_urls = re.findall(photo_pattern,photo_conents)
            for img_url in img_urls:
                # path 是一个字符串,所以要拼接上'/'才能表示路径
                img_path = path+'/'+str(i)
                # 自增操作,好像i++ 在这里用不了
                i+=1
                # 下载图片
                urllib.urlretrieve(img_url,img_path)
                print '图片'+img_path+'下载完成'
                print '相册'+album_url[1]+'下载完成!!!!!'
except urllib2.URLError,e:
    if hasattr(e,"code"):
        print e.code
    if hasattr(e,"reason"):
        e.reason

运行结果如下:

102558_iOAN_2429887.jpg

好吧又出现了一个错误,其实这个错误我本来是不想写的,不过某天看到QQ群里面有人问起这个错误是怎么回事,所以就在这里提一下,还是将错误信息复制然后百度

"原因就是python的str默认是ascii编码,和unicode编码冲突,就会报这个标题错误"

解决方法就是将中文的部分改成 u'中文' 的形式,在上面的程序中,中文一共出现3次,将它们修改为

print u'正在下载'+album_url[1]+u'相册里的图片'
print u'图片'+img_path+u'下载完成'
print u'相册'+album_url[1]+u'下载完成!!!!!'

好了,修改代码之后测试看看吧

转载于:https://my.oschina.net/u/2429887/blog/537693

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值