用python requests库写一个人人网相册爬虫

简介: 担心人人网会黄掉,写个爬虫,把我的相册照片都下载下来。代码如下: # -*- coding: utf-8 -*- import requests import json import os def mkdir(path): path=path.

担心人人网会黄掉,写个爬虫,把我的相册照片都下载下来。代码如下:

# -*- coding: utf-8 -*-
import requests
import json
import os

def mkdir(path):
    path=path.strip()
    path=path.rstrip("\\")
    isExists=os.path.exists(path)
    if not isExists:
        print path+u' 创建成功'
        os.makedirs(path)
        return "yes"
    else:
        print path+u' 目录已存在'
        return "no"

def login_renren(s):
    origin_url = 'http://www.renren.com'
    login_data = {
        'email':'用户名',
        'domain':'renren.com',
        'origURL':'http://www.renren.com/home',
        'key_id':'1',
        'captcha_type':'web_login',
        'password':'密码抓包获得',
        'rkey':'rkey抓包获得'
    }
    r = s.post("http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2016742045262", data = login_data)
    if 'true' in r.content:
        print u'登录人人网成功'
    return s
def get_albums(s): r = s.get('http://photo.renren.com/photo/278382090/albumlist/v7?showAll=1#') #print r.content content = r.content index1 = content.find('nx.data.photo = ') #print index1 index2 = content.find('nx.data.hasHiddenAlbum =') #print index2 target_json = content[index1+16:index2].strip() target_json = target_json[0:len(target_json)-1] #print target_json data = json.loads(target_json.replace("\'", '"')); album_list = data['albumList'] album_count = album_list['albumCount'] tip = u'一共有'+str(album_count)+u'个相册' print tip album_ids = [] for album in album_list['albumList']: #print album['albumName'] album_ids.append(album['albumId']) return album_ids,s def download_albums(album_ids,s): #访问相册 for album_id in album_ids: album_url = 'http://photo.renren.com/photo/278382090/album-'+album_id+'/v7' r = s.get(album_url) if "photoId" in r.content: print u'进入相册成功' #print r.content content = r.content index1 = content.find('nx.data.photo = ') #print index1 index2 = content.find('; define.config') #print index2 target_json = content[index1+16:index2].strip() target_json = target_json[13:len(target_json)-2] #print target_json data = json.loads(target_json.replace("\'", '"')); photos = data['photoList'] album_name = data['albumName'] # 定义并创建目录 album_path = 'd:\\'+album_name #print album_path if mkdir(album_path)=='yes': for photo in photos: #print photo['url'] image_name = photo['photoId'] photo_url = photo['url'] r = requests.get(photo_url) image_path = album_path+'/'+image_name+'.jpg' f = open(image_path, 'wb') f.write(r.content) f.close() tip = u'相片'+image_name+u'下载成功' print tip else: print u'相册已经下载' #执行该文件的主过程 if __name__ == '__main__': #创建requests会话 s = requests.Session() #登录人人网 s = login_renren(s) #获取相册列表 album_ids,s = get_albums(s) #下载相册 download_albums(album_ids,s)

搞定!运行效果如下:

 

相关文章
|
19天前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
10天前
|
XML JSON 数据库
Python的标准库
Python的标准库
123 77
|
4天前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
5天前
|
JSON 数据可视化 测试技术
python+requests接口自动化框架的实现
通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。
23 7
|
24天前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
73 4
数据分析的 10 个最佳 Python 库
|
11天前
|
XML JSON 数据库
Python的标准库
Python的标准库
39 11
|
24天前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
96 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
11天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
52 8
|
9天前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。
|
17天前
|
数据采集 JSON 开发者
Python爬虫京东商品详情数据接口
京东商品详情数据接口(JD.item_get)提供商品标题、价格、品牌、规格、图片等详细信息,适用于电商数据分析、竞品分析等。开发者需先注册账号、创建应用并申请接口权限,使用时需遵循相关规则,注意数据更新频率和错误处理。示例代码展示了如何通过 Python 调用此接口并处理返回的 JSON 数据。
下一篇
DataWorks