Python爬虫 - 人人贷散标
前言
这次爬的网站 人人贷 - 散标 是一个客户要求爬的,数据一共是148w多条,不过后来发现有绝大部分是无效数据,也就是那个页面不存在,不过我看网上很多人爬这个网站都是用什么 BeautifulSoup、Selenium,首先 BeautifulSoup 提供 Cookie 应该是能爬,不过以前的页面和现在的页面有些不同,应该有点麻烦,我没试过;而 Selenium 可以直接放弃了,就一个原因,慢,你如果是爬几十个、几百个页面你也许能忍;我这次用的方法有些不同,不需要 Cookie,而且用 Scrapy 速度也挺快;(以下测试用到的网页都是 www.renrendai.com/loan-299665…
正文
一、分析站点
在抓取每个网站前肯定是需要分析它的结构的,我随便点了一个最新的散标网页,如下图可见没登陆仅能显示一小部分信息
再看看其源码,毛都没有,只有登陆后才有内容,?
那可不一定哦,切换到 Network 然后刷新网页,从中获取返回的response,翻到最下面的 js 代码部分,大概400行处
可以看到有些js变量内容是unicode,然后还有用到了json解析方法,将这部分代码复制然后切换到 console 粘贴
随便用一个变量让其弹出代码提示,可以看到有很多json key
borrower 应该是借款人的意思,可以看到其内容就是借款人的信息
那么只需要用正则获取到这些json然后解析就能获取其所有信息,不过目前还不知道哪些 key 代表哪部分信息,不过想了一想,既然所有信息都返回了那肯定有对应的js来解析,接着我从之前刷新的内容中发现一个js文件就是需要的
将其下载下来便于之后写代码分析
二、代码
1、首先获取js变量info、detail,这两个保存了所有信息,而上面保存的js文件就是对其解析用的
html = resp.text
pattern = "var.?info.?=.?'(.*?)';?\n+?var.?detail.?=.?'(.*?)';?\nvar isTransfer"
info, detail = re.findall(pattern, html)[0]
复制代码
2、接着用json.loads对其转换,不过在此之前先得把其中得unicode给转换一下,因为从requests获取到的都是直接转义过了的,所以我直接写了一个方法,其中的内容仅针对人人贷散标网页
def de_unicode(text):"""unicode转换,因为从response获取到的内容无法直接decode"""return text.replace('\\u0022', '"').replace('\\u005C', '').replace('\\u002D', '-')
复制代码
不过还不能用json.loads,因为其中 [] 中括号是加了双引号的原因会让其报错,所以我又写了一个方法
def de_json_str(text):"""替换[]括号,直接json.loads会因为 "[,]" 的原因报错"""return text.replace('"[', '[').replace(']"', ']')
复制代码
接着就能直接转换了
# 获取info
info = json.loads(de_json_str(de_unicode(info)))
# 获取detail
detail = json.loads(de_json_str(de_unicode(info)))
复制代码
获取到json对象的info、detail后就开始解析,在此之前先分析一下直接下载的js解析文件
createLeftDom 方法解析的是我们没登陆看到的部分借款信息
createTransferHtml 方法是借款人的信息解析
getMarriage 方法是婚姻信息解析,因为你在info里获取到的婚姻状态是英语表示的
还有想获取什么信息直接看那个js代码即可,我就不再分析了,不过我客户有个需求是获取散标状态,也就是散标是否还款完、违约等状态,不过那个信息是张图,所以我们需要接着分析js,这里是个switch(我不会js,ase应该是类似case)
其中 OVERDUE 是表示逾期,BADDEBT 是坏账 应该是欠账的意思把,而其对应的图片关系到status这个变量,status这个变量就是所判断的值,status是从loan中获取的
loan是在info中获取的,尝试获取,其内容是 IN_PROGRESS
不过如果直接将 IN_PROGRESS 替换到那个图片链接中是没有这个图片的,status经过 utils.loanAllType 方法处理过,这个方法来源于 common_wdg_6fdbabe.js 文件
从这可以看到如果 status == IN_PROGRESS,那么sta就等于 REPAYING,这个就是返回的内容,接着按照你的需求写代码即可
最后
项目:renrendai
转载于:https://juejin.im/post/5d12f754e51d45777540fddb
Python爬虫 - 人人贷散标相关推荐
- python爬人人贷代码视频_Python爬虫 - 人人贷散标
前言这次爬的网站 [人人贷 - 散标](网贷p2p散标列表 - 人人贷官网) 是一个客户要求爬的,数据一共是148w多条,不过后来发现有绝大部分是无效数据,也就是那个页面不存在,不过我看网上很多人爬这 ...
- python3爬虫----人人贷散标用户信息爬取
前提 本文基于此篇博文的实现思路以及给出的代码.不得不说,此博主心真的细,这个数据隐藏点都找到了,从而使得此爬虫的实现简单许多. 但我在使用博主代码时,发现人人贷网站有些许改变,于是对应代码我也相应做 ...
- 人人贷散标爬虫实例进阶-使用异步io
写在前面: 1.该代码写于2020年4月5日,经查看,人人贷网站前端已出现变化,所以该代码无法直接运行.该代码为此版本的改善.人人贷散标爬虫实例_小zhan柯基-CSDN博客_人人贷爬虫 2.由于爬取 ...
- python爬人人贷代码视频_【IT专家】人人贷网的数据爬取(利用python包selenium)
本文由我司收集整编,推荐下载,如有疑问,请与我司联系 人人贷网的数据爬取(利用 python 包 selenium ) 2016/12/31 0 记得之前应同学之情,帮忙爬取人人贷网的借贷人信息,综合 ...
- Python爬虫-网贷之家P2P机构排名查询
python采用3.X版本,依赖三方库BeautifulSoup/requests/pymysql 由于最近P2P暴雷事件,写一个爬虫定时去爬取网贷之家对各个公司的排名及当前状况的分析,分为经营正常和 ...
- 用python处理28万条人人贷数据,告诉你最详细的借款人结构分布情况
目录 一.import 二.导入数据 三.借款人籍贯分布图 四.性别分布 五.教育程度分布 六.借款人年龄分布 七.借款人职位分布 八.借款人行业分布 九.借款金额分布图 十.借款人收入分布 十一. ...
- python人人贷爬虫_爬取人人贷网上部分借贷信息以及数据可视化
一.主题式网络爬虫设计方案:爬取人人贷网上部分借贷信息 1.主题式网络爬虫名称:爬取人人贷网上部分信息 2.主题式网络爬虫的内容与数据特征分析:爬取人人贷部分信息数据,借贷信息 3.主题式网络爬虫设计 ...
- 手把手教你用python爬取人人贷网站借款人信息
P2P是近年来很热的一个行业,由于这个行业在国内兴起才不久,国内的很多学者对这个行业都兴趣盎然,在大学研究互联网金融的学者更是有一大群.小编是学金融出身,深知数据在做学术研究的重要性,之前有不少学互联 ...
- 人人贷网的数据爬取(利用python包selenium)
记得之前应同学之情,帮忙爬取人人贷网的借贷人信息,综合网上各种相关资料,改善一下别人代码,并能实现数据代码爬取,具体请看我之前的博客:http://www.cnblogs.com/Yiutto/p/5 ...
最新文章
- 用结构体实现一个电话本
- php io select,Python IO多路复用之——select方案服务端和客户端代码【python源码详解】...
- 排序算法 - 6种 - 超炫的动画演示 - Python实现
- linux 运行python效率高还是windows高_为什么使用Mac开发比Windows效率高?
- MVC4发布到IIS,出现HTTP 错误 404.0 - Not Found的解决方法
- Java常用Linux命令集合
- matlab步长教程,matlab仿真步长
- 消色差、半复消色差、复消色差的区别
- 三点估算与类比估算_通过将东西塞进盒子来估算
- SPSS作业-检验两组数据有无显著
- 成都Uber优步司机奖励政策(3月11日)
- 我用二手书,在这里换了一大箱好书
- AutoCAD CSCAD注册命令类型的控制
- C#WinForm中在dataGridView中添加中文表头
- 9章 RxJava混合实战
- Cesium中的相机—HeadingPitchRoll
- 区块链 -- 以太坊的36个概念
- 个人站——作品集页面设计
- 电脑桌面日程管理工具
- 【GDKOI训练】纸牌游戏(card)