python-33:極視界爬蟲V-0.2

來看看修改好的新的代碼html

#!/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

運行結果以下:python


好吧又出現了一個錯誤,其實這個錯誤我原本是不想寫的,不過某天看到QQ羣裏面有人問起這個錯誤是怎麼回事,因此就在這裏提一下,仍是將錯誤信息複製而後百度測試

"緣由就是python的str默認是ascii編碼,和unicode編碼衝突,就會報這個標題錯誤"編碼

解決方法就是將中文的部分改爲 u'中文' 的形式,在上面的程序中,中文一共出現3次,將它們修改成url

print u'正在下載'+album_url[1]+u'相冊裏的圖片'
print u'圖片'+img_path+u'下載完成'
print u'相冊'+album_url[1]+u'下載完成!!!!!'

好了,修改代碼以後測試看看吧
code

相關文章
相關標籤/搜索