如何用Python爬取美国借贷平台Prosper的完整借贷数据

这个是官方给的API 地址,但是我在使用这个 api 的时候只会给我返回总计一百多条数据,剩下的数据就获取不到了。

我用的是“/listingsvc/v2/listings/?limit=25 ”这个接口,设置了 offset 也没有用,传过来的数据量很少;所以我想问问是不是我用的接口不对?还是说官方接口需要什么特别的权限?

希望论坛有 prosper 爬取经验的大神能解疑一下,谢谢啦


如何用Python爬取美国借贷平台Prosper的完整借贷数据

7 回复

为 PROSPER 提供数据的 Experian 不是被连锅端了么?


要爬取Prosper的完整借贷数据,你需要使用他们的公开API。Prosper提供了开发者API来获取借贷列表、详情等数据。以下是完整的代码示例:

import requests
import pandas as pd
from datetime import datetime
import time

class ProsperDataCrawler:
    def __init__(self, api_key=None):
        self.base_url = "https://api.prosper.com/v1"
        self.headers = {
            'Accept': 'application/json',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
        }
        if api_key:
            self.headers['Authorization'] = f'Bearer {api_key}'
        
    def get_listings(self, limit=500, offset=0):
        """获取借贷列表数据"""
        url = f"{self.base_url}/listingsvc/v2/listings"
        params = {
            'limit': limit,
            'offset': offset,
            'biddable': 'true'
        }
        
        try:
            response = requests.get(url, headers=self.headers, params=params)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            print(f"请求失败: {e}")
            return None
    
    def get_all_listings(self, max_pages=None):
        """获取所有借贷数据"""
        all_listings = []
        offset = 0
        limit = 500
        page_count = 0
        
        while True:
            print(f"正在获取第 {page_count + 1} 页数据...")
            data = self.get_listings(limit=limit, offset=offset)
            
            if not data or 'result' not in data:
                break
                
            listings = data['result']
            if not listings:
                break
                
            all_listings.extend(listings)
            
            # 检查是否还有更多数据
            if len(listings) < limit:
                break
                
            offset += limit
            page_count += 1
            
            if max_pages and page_count >= max_pages:
                break
                
            # 避免请求过于频繁
            time.sleep(1)
        
        return all_listings
    
    def save_to_csv(self, data, filename=None):
        """保存数据到CSV文件"""
        if not filename:
            timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
            filename = f"prosper_data_{timestamp}.csv"
        
        df = pd.DataFrame(data)
        df.to_csv(filename, index=False, encoding='utf-8')
        print(f"数据已保存到: {filename}")
        return filename

# 使用示例
if __name__ == "__main__":
    # 如果需要认证,可以在这里添加API密钥
    # crawler = ProsperDataCrawler(api_key="your_api_key_here")
    
    crawler = ProsperDataCrawler()
    
    # 获取数据(可以设置max_pages限制获取页数)
    print("开始爬取Prosper借贷数据...")
    listings_data = crawler.get_all_listings(max_pages=5)  # 先测试5页
    
    if listings_data:
        print(f"成功获取 {len(listings_data)} 条借贷记录")
        
        # 显示数据字段示例
        if listings_data:
            print("\n数据字段示例:")
            print(list(listings_data[0].keys()))
            
            # 保存数据
            crawler.save_to_csv(listings_data)
    else:
        print("未能获取数据")

这个爬虫包含以下功能:

  1. API请求封装ProsperDataCrawler类封装了所有API调用逻辑
  2. 分页获取get_all_listings()方法自动处理分页,直到获取所有数据
  3. 数据保存save_to_csv()将数据保存为CSV格式
  4. 错误处理:基本的请求异常处理

重要说明

  • Prosper API可能需要认证才能访问完整数据
  • 免费API通常有速率限制,代码中加了1秒延迟
  • 获取的数据包含借贷金额、利率、信用等级、借款目的等字段

使用建议: 先测试少量数据(设置max_pages=2),确认能正常工作后再获取完整数据。如果遇到认证问题,可能需要注册Prosper开发者账号获取API密钥。

一句话总结:用他们的官方API配合requests库分页获取最靠谱。

我以前工作的公司…

那请问你对公司数据 api 接口这方面有了解吗?

所以说是取不到了么。。。

人家加了反爬虫啊,你真想爬的话,复盘一下你的流程,看看跟真实用户有哪些不一样的,尽量模拟呗

已经查明原因了,对外提供的开放接口只能获取到当天的数据,历史数据想要获取的话需要找 prosper 官方,签署一个协议之后才能获取

回到顶部