爬虫爬虫学习: 爬取网页图片

#coding=utf-8



import urllib2
import os
import time
import random

def url_open(url):
    
    headers={
        'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
        }


'''
    proxies=[
            '60.191.156.134:3128'
                                   ]

    proxy=random.choice(proxies)

    proxy_support=urllib2.ProxyHandler({'http':proxy})
    opener=urllib2.build_opener(proxy_support)
    
    urllib2.install_opener(opener)


'''
    


    req=urllib2.Request(  
        url=url,   

        headers=headers  
        )

    content = urllib2.urlopen(req).read()

    time.sleep(5)
    
    return content


def get_page(url): 
    html=url_open(url).decode('utf-8')

    #寻找current-comment-page的位置,返回的是位置的具体位置,是一个数,数的是每个字节。
    #   +23 是在加上current-comment-page">[      然后得到后面的数字的位置
    a=html.find(r'current-comment-page')+23
   

    # 意思是从a位置开始向后面寻找] 字符 并记录位置
    b=html.find(']',a)

    # 返回从a 到 b 中的数据 
    return html[a:b]


def find_imgs(url):
    html=url_open(url).decode('utf-8')
    img_addrs=[]

    a=html.find(r'img src=')

    while a!=-1:
        b=html.find(r'.jpg',a,a+255)
        if b!=-1:
            img_addrs.append(html[a+9:b+4])
        else:
            b=a+9

        a=html.find(r'img src=',b)
       
    return img_addrs

    
def save_imgs(folder,img_addrs):
    for each in img_addrs:
        
        filename=each.split('/')[-1]
        
        print "-------------------------------save part -------------------------------------"
        # open 是打开网页,然后用''wb二进制 ,
        #使用了 with 语句,不管在处理文件过程中是否发生异常,都能保证 with 语句执行完毕后已经关闭了打开的文件句柄。
        print each



        with open(filename,'wb') as f:  #as相当与赋值号
            #打开一个图片网页,然后赋值给img
            img=url_open(each)

            f.write(img)


'''
>>> u = "www.doiido.com.cn"
 
#使用默认分隔符
>>> print u.split()
['www.doiido.com.cn']
 
#以"."为分隔符
>>> print u.split('.')
['www', 'doiido', 'com', 'cn']

'''


'''
要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:
>>> f = open('/Users/michael/test.txt', 'r')
就行打开一个网页或者文件一样
try:
    f = open('/path/to/file', 'r')
    print f.read()
finally:
    if f:
        f.close()


'''


def meizitu(folder='ooxx',pages=10):
    
    if(os.path.exists(r'C:\Users\Administrator\Desktop\test\ooxx')==False):
        os.mkdir(folder)
        os.chdir(folder)
    
    url=r'http://jandan.net/ooxx/'

    page_num=int(get_page(url))
    

    for i in range(pages):
        page_num -=i
        page_url=url + r'page-'+str(page_num)+r"#comments"        

        img_addrs=find_imgs(page_url)
        save_imgs(folder,img_addrs)

if __name__ == '__main__':
    meizitu()



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值