python 爬虫爬取人人网你的好友的所有相册图片

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2017-10-18 10:04:04
# @Author  : awakeljw ([email protected])
# @Link    : http://blog.csdn.net/awakeljw/
# @Version : $Id$

import os
import re  
import urllib.request

def login(url):  
    COOKIE = '你自己的cookie'  
    user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'  
    referer = 'http://friend.renren.com/managefriends'
    HEADERS = {'cookie' : COOKIE,"User-Agent":user_agent,'Referer':referer}  
    req = urllib.request.Request(url, headers=HEADERS)  
    page = urllib.request.urlopen(req).read()  
    return page

id_ufriend = 你的朋友的id
# 获取相册编号
album_url = 'http://photo.renren.com/photo/'+id_ufriend+'/albumlist/v7#'
page = login(album_url)
pattern = re.compile(r'"albumId":"(.*?)",')  
page = page.decode('utf-8')  
imagelist = re.findall(pattern,page) 

num_album = 0
#获取相册内所有照片
photolist={}
for imgurl in imagelist:
    photo_url = 'http://photo.renren.com/photo/'+id_ufriend+'/album-'+imgurl+'/v7'
    photo_page = login(photo_url)
    pattern = re.compile(r'"url":"(.*?).jpg"},')  
    photo_page = photo_page.decode('utf-8')  
    photolist[num_album] = re.findall(pattern,photo_page) 
    num_album +=1

#获取相册名字
album_url = 'http://photo.renren.com/photo/'+id_ufriend+'/albumlist/v7#'
page = login(album_url)
pattern = re.compile(r'"albumName":"(.*?)",')  
page = page.decode('utf-8')  
namelist = re.findall(pattern,page) 
print (namelist)
if '\\' not in namelist[0]:
    for i in range(len(namelist)):
        if not os.path.isdir(r'I:\pachong\all\ '+ namelist[i]):
            os.mkdir(r'I:\pachong\all\ '+ namelist[i])
else:
    break
#下载所有图片
x=0
try:
    for i in range(num_album):
        if photolist[i] != []:
    #       print(photolist[i])
            for imgurl in photolist[i]:
                f = open(r'I:\pachong\all\ '+ namelist[i]+'\ '+str(x)+'.jpg','wb')  
                imgurl_new = imgurl.replace('\\','')
                imgurl_new = imgurl_new+'.jpg'
                print(imgurl_new)
                buf = login(imgurl_new)
                f.write(buf)
                x+=1
except :
    print (r'I:\pachong\all\ '+ namelist[i]+'\ '+str(x)+'.jpg is error')
finally :
    print('finish')

什么是cookie

cookie在http请求和http响应的头信息中,cookie是消息头的一种很重要的属性. 当用户通过浏览器首次访问一个域名时,访问的WEB服务器会给客户端发送数据,以保持WEB服务器与客户端之间的状态保持,这些数据就是Cookie,它是 Internet 站点创建的 ,为了辨别用户身份而储存在用户本地终端上的数据,Cookie中的信息一般都是经过加密的,Cookie存在缓存中或者硬盘中,在硬盘中的是一些小文本文件,当你访问该网站时,就会读取对应网站的Cookie信息,Cookie有效地提升了我们的上网体验。一般而言,一旦将 Cookie 保存在计算机上,则只有创建该 Cookie 的网站才能读取它。

  为什么需要cookie

Http协议是一个无状态的面向连接的协议,Http协议是基于tcp/ip协议层之上的协议,当客户端与服务器建立连接之后,它们之间的TCP连接一直都是保持的,至于保持的时间是多久,是通过服务器端来设置的,当客户端再一次访问该服务器时,会继续使用上一次建立的连接,但是,由于Http协议是无状态的,WEB服务器并不知道这两个请求是否同一个客户端,这两次请求之间是独立的。 为了解决这个问题, Web程序引入了Cookie机制来维护状态.cookie可以记录用户的登录状态,通常web服务器会在用户登录成功后下发一个签名来标记session的有效性,这样免去了用户多次认证和登录网站。记录用户的访问状态。

  比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的,那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了。
  上述引用于https://www.cnblogs.com/kongzhagen/p/6169023.html

你可能感兴趣的:(python,爬虫-python)