广西互联网金融平台系列-Scrapy爬虫爬取乐助贷Ajax api数据(无登陆GET)

一、背景

1.在爬取数据的过程中,会遇到很多不同的数据结构,有些是html/css直接输出、有些是JS渲染是数据、有些是JS点击,而有一些则是用Ajax与API通信进行数据的请求。这一次记录的是Ajax与API通信这种类型的数据抓取。

2.这一次的案例是GET请求,非POST,所以轻松一点。

二、目的

1.获取广西某网贷平台标的信息数据--[标的名称、标的收益率、标的期限、标的金额]等信息

2.获取其投资人投资记录信息--[投资人ID、投资人username、投资人投资金额amount]

3.通过Scrapy框架进行数据抓取

三、条件

1.目标接口请求类型为:GET请求

2.目标无需登录验证

3.目标需要翻页

四、工具

1.Scrapy

2.MysqlWorkben

3.Json

五、示例

1.简单示例

2.这里不翻页爬

spiders/spider.py中编写具体爬虫逻辑:

import scrapy
from scrapy.http import Request
import json
from urllib import parse



class LezhuSpider(scrapy.Spider):
    name = 'lezhudai'
    allowed_domains = ['www.lezhudai.com']
    start_urls = ["https://www.lezhudai.com/?action=invest_service.get_borrow_list&type=2&repayment_term=0&interest_rate=0&state=2&sort_type=0&repay_type=0&page_index=1"]

    def parse(self, response):
        """
        将当前API的所有信息拿到
            并传给detail进行深入爬取
            简单测试只爬取当前页
        """
        sites = json.loads(response.body_as_unicode())  # 通过json loads解析json数据 并且转换编码
        lsites = sites['list']
        for i in range(0,len(lsites)):
            """ 
            在循环中获取标的信息,包括标的id/标题/金额/投资收益率/投资期限等 
                然后根据标的id构造详情页 ,调用parse_detail进行详情页的接口请求
            """
            lid = lsites[i]['id']
            title = lsites[i]['name']
            amount = lsites[i]['amount']
            profit = lsites[i]['annual_rate']
            terms = lsites[i]['period']
            print("标的ID=" + lid + ",标的名称=" + title + ",标的金额=" + amount + ",标的收益率" + profit + ",标的期限")
            yield Request(url="https://www.lezhudai.com/?action=invest_service.get_borrow_invest_log&id=%s&page_index=1" %(lid), callback=self.parse_detail)

    def parse_detail(self, response):
        """
        根据上面传进来的url 解析投资记录
            获取投资人投资记录信息 包括[投资人id/投资人用户名/投资人投资金额]
            记录当前接口url 后期入库进行关联识别
        """
        lsites = json.loads(response.body_as_unicode())  # 解码
        invest = lsites['list']
        for i in range(0,len(invest)):
            target_urls = response.url
            userid = invest[i]['user_id']
            user_name = invest[i]['user_name']
            amount = invest[i]['amount']
            print(userid +"->" + user_name + "->" + amount)
            print(target_urls)

保存运行,即可得到输出结果:

标的信息数据,到网页中对比,数据无误

标的ID=11371,标的名称=乐助分期借款66611779,标的金额=1540000,标的收益率0.12,标的期限24

标的ID=11370,标的名称=乐助分期借款66611778,标的金额=1540000,标的收益率0.12,标的期限24

标的ID=11368,标的名称=乐助分期借款66611774,标的金额=1540000,标的收益率0.12,标的期限24

标的ID=11367,标的名称=乐助分期借款66611771,标的金额=1540000,标的收益率0.12,标的期限24

标的ID=11366,标的名称=乐助分期借款66611770,标的金额=1540000,标的收益率0.12,标的期限24

标的ID=11365,标的名称=乐助分期借款66611769,标的金额=1540000,标的收益率0.12,标的期限24

标的ID=11364,标的名称=乐助分期借款66611768,标的金额=1540000,标的收益率0.12,标的期限24

标的ID=11363,标的名称=乐助分期借款66611767,标的金额=1540000,标的收益率0.12,标的期限24

标的ID=11362,标的名称=乐助分期借款11111766,标的金额=1980000,标的收益率0.12,标的期限24

标的ID=11358,标的名称=乐助分期借款22211762,标的金额=1980000,标的收益率0.12,标的期限24

投资人投资记录信息输出:

86813->138*****239->1980000 https://www.lezhudai.com/?action=invest_service.get_borrow_invest_log&id=11358&page_index=1

40270->185*****884->1980000 https://www.lezhudai.com/?action=invest_service.get_borrow_invest_log&id=11362&page_index=1

67116->139*****756->1540000 https://www.lezhudai.com/?action=invest_service.get_borrow_invest_log&id=11363&page_index=1

……

……

……

然后可以编写Item和对应的数据处理了,比如将金额格式统一float 19800.00元,收益率12%等等操作

再到Pipeline编写入库或者存入文件的操作

转载于:https://my.oschina.net/RanboSpider/blog/1605032

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值