Python爬虫——人人好友相册自动下载(一)

原创 2013年12月03日 23:20:07



#版本一,COOKIE登陆,不能多线程下载,不能刷新加载更多的好友
#登陆参数,需要你COOKIE,人人ID(可在网址最后的9位数字找到)
# coding=utf8
import os
import re
import urllib2


COOKIE = '你自己人人的COOKIE'
HEADERS = {'cookie' : COOKIE}

# find title     
def find_title(mypage):
    myMatch = re.search(r'<title>(.+?)</title>', mypage, re.S)
    title = u'undefined'
    if myMatch:
        title = myMatch.group(1)
    else:
        print u'find no title'
    # 文件名不能包含以下字符: \ / : * ? " < > |  
        title = title.replace('\\', '').replace('/', '').replace(':', '').replace('*', '').replace('?', '').replace('"', '').replace('>', '').replace('<', '').replace('|', '')
    return title

def login_renren(url):
    try:
        req = urllib2.Request(url, headers=HEADERS)
        page = urllib2.urlopen(req).read()
        page = page.decode('utf-8')
        title = find_title(page)
        print title
        return page
    except:
        page = ur''
        return page
    
def downImage(filePath, savePath):  # 根据filePath里面的url自动下载图片  
    tt = 0  # name  
    sour = open(filePath, 'r')  
    while 1:  
        line = sour.readline()  
        if line:  
            # 判断从文件中读取的url是不是图片类型,这里是jpg类型  
            if(line.find('jpg') > 0):  
                data = urllib2.urlopen(line).read()
                path = savePath +str(line[-10:-5])+ str(tt) + '.jpg'  
                f = open(path, 'wb')  # 在tmp文件中存储下载的图片  
                f.write(data)  
                f.close()  
                tt = tt + 1  
            else:  
                pass
        else:
            break  
    sour.close()
      
# http://www.renren.com/你的人人ID号码#!//friend/manage     
def find_friendId(loginID):
    list = ur''
    sour = open('id.txt', 'w')
    friendManager_url = r'http://www.renren.com/' + str(loginID) + '#!//friend/manage'
    print friendManager_url
    page = login_renren(friendManager_url)
    pattern3 = re.compile(r'namecard=".*?"\shref')
    if pattern3.findall(page):
        list = pattern3.findall(page)
    else:
        print 'find no friend id'
    
    pattern2 = re.compile(r'\d{9}')
    for i in list:
        if pattern2.search(i):
            id = pattern2.search(i).group()
        sour.write(id)
        sour.write(os.linesep)
    sour.close()
    
# http://photo.renren.com/photo/你好友的ID/album/relatives/profile   		这里是你好友的相册目录
# http://photo.renren.com/photo/你好友的ID/album-535947620?frommyphoto            这里是你好友的相册
def find_AblumUrl():
    list = ur''
    file = open('id.txt')
    ablum = open('ablumlist.txt', 'w') 
    while 1:
        line = file.readline()
        if line:
            line = line[:-1]
            photo_url = 'http://photo.renren.com/photo/' + str(line) + '/album/relatives/profile'
            print photo_url
            data = login_renren(photo_url)
            pattern = re.compile(r'http://photo.renren.com/photo/(.+?)frommyphoto')
            if pattern.findall(data):
                list = pattern.findall(data)
            else:
                print 'find no ablum id'
            
            for i in list:
                print i
                album_list = 'http://photo.renren.com/photo/' + str(i) + 'frommyphoto'
                print album_list
                ablum.write(album_list)
                ablum.write(os.linesep)
        else:
            break
        
# xLarge:'http://fmn.rrfmn.com/fmn058/20130603/0035/original_1l5N_40d00000290b125d.jpg' 这是一个大图的URL地址,通过他可以进行下载    
def getImageUrl(data, filePath):
    list = ur''
    sour = open(filePath, 'w')
    pattern = re.compile(r'xLarge:.*?\.jpg')
    if pattern.findall(data):
        list = pattern.findall(data)
    else:
        print 'found no image'
    
    for i in list:
        i = i[8:]
        sour.write(i)
        sour.write(os.linesep)
    sour.close()

def searchAlbum(filePath):
    file = open('ablumlist.txt')
    while 1:
        line = file.readline()
        if not line:
            break
        else:
            data = login_renren(line)
            getImageUrl(data, filePath)
            downImage(filePath, savePath)  
    file.close()
    
LOGINID = '你的ID号'     #请输入你人人ID  http://www.renren.com/XXXXXXXXX
URL = r'http://www.renren.com'
savePath = r''
filePath = r'image_list.txt'

find_friendId(LOGINID)
find_AblumUrl()
searchAlbum(filePath)
downImage(filePath, savePath)
print 'OK '
    



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Python爬虫——人人好友相册多线程下载(二)

改进:加入了多线程下载,提高了照片匹配的准确度,好友相册能够完整下载 一、Cookie获得 chrome 浏览器 Mac Command + Alt + I   windows 好像是F1...

python自动下载人人所有好友的相册

作者:华亮 转载请说明出处:http://blog.csdn.net/cedricporter    昨天下午写的自动抓取自己人人相册的python代码,用途貌似只有备份一下自己...

使用Python2.7和火狐浏览器下载QQ空间好友相册(二)

原来的文章由于用到了curl的命令,比较麻烦,而且带上cookie之后还是有一部分无法下载,所以用httplib2代替了curl、urllib、urllib2的一些功能。重新写了一个代码 前面文章的代...

使用Python2.7和火狐浏览器下载QQ空间好友相册

说明:本文代码参考:http://haofly.net/python3-get-qqalbum/ 不过对于由于QQ空间后台更新,本文根据QQ空间最新的JSONAPI做了改进 首先需要下载window...

python爬虫学习之路(2)_ 淘宝淘女郎相册打包下载

淘宝现阶段的淘女郎相册无须登录,省了好多麻烦,如果需要登录,请看本系列第一篇文章 本人现阶段尚在学习阶段,参考学习链接如下,部分代码可能存在相同,可以参考:http://cuiqingcai.com/...

【图文详解】python爬虫实战——5分钟做个图片自动下载器

python爬虫实战——图片自动下载器之前介绍了那么多基本知识【Python爬虫】入门知识,大家也估计手痒了。想要实际做个小东西来看看,毕竟: talk is cheap show me the ...

Python爬虫学习笔记——自动爬取XX网站,下载种子,封面,番号

今天爬取1024核工厂的网站,一开始不设置Header的话,直接返回403,拒接访问,所以必须加上头。 另外在Accept-Encoding这里设置为 identity 的话,本意是设置不允许压缩文件...
  • zcy0xy
  • zcy0xy
  • 2016-11-30 15:03
  • 2587

Python简单网页爬虫——极客学院视频自动下载

一、需求背景最近正好在研究Python,看了菜鸟教程上的基本教程,然后又再看极客学院的教学视频,向实战进军。极客学院的视频是需要会员才能下载的,客户端倒是可以批量下载,但是下载之后,没有目录结构,文件...

python爬虫——校园网自动重连脚本

一、背景最近学校校园网不知道是什么情况,总出现掉线的情况。每次掉线都需要我手动打开web浏览器重新进行账号密码输入,重新进行登录。系统的问题我没办法解决,但是可以写一个简单的python脚本用于自动登...

Python3爬虫实践——QQ空间自动点赞程序(下)

QQ空间自动点赞爬虫。 在浏览器地址栏输入网址并回车、或点击刷新后,浏览器与Qzone又发生了什么交易? GZIP解压GET到的数据包。 近期Qzone发说说后,emoji表情变得不清真了? 使用正则...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)