python爬人人贷代码视频_Python爬虫 - 人人贷散标
前言这次爬的网站 [人人贷 - 散标](网贷p2p散标列表 - 人人贷官网) 是一个客户要求爬的,数据一共是148w多条,不过后来发现有绝大部分是无效数据,也就是那个页面不存在,不过我看网上很多人爬这个网站都是用什么 BeautifulSoup、Selenium,首先 BeautifulSoup 提供 Cookie 应该是能爬,不过以前的页面和现在的页面有些不同,应该有点麻烦,我没试过;而 Selenium 可以直接放弃了,就一个原因 慢,你如果是爬几十个、几百个页面你也许能忍;我这次用的方法有些不同,不需要 Cookie,而且用 Scrapy 速度也挺快;(以下测试用到的网页都是 https://www.renrendai.com/loan-2996659.html)
正文
一、分析站点
在抓取每个网站前肯定是需要分析它的结构的,我随便点了一个最新的散标网页,如下图可见没登陆仅能显示一小部分信息
再看看其源码,毛都没有,只有登陆后才有内容?
那可不一定哦,切换到 Network 然后刷新网页,从中获取返回的response,翻到最下面的 js 代码部分,大概400行处
可以看到有些js变量内容是unicode,然后还有用到了json解析方法,将这部分代码复制然后切换到 console 粘贴
随便用一个变量让其弹出代码提示
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获取到的都是直接转义过了的,我用 .encode('utf-8').decode('utf-8','ignore') 无法转换(求教) 所以我直接写了一个方法,其中的内容仅针对人人贷散标网页
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 文件
utils.loanAllType = function(status) {
var sta = "";
return sta = "OPEN" == status ? "OPEN" :
"FIRST_APPLY" == status ||
"APPLY" == status ? "APPLY" :
"FIRST_READY" == status ||
"READY" == status ? "READY" :
"IN_PROGRESS" == status ||
"REPAYING" == status ? "REPAYING" :
"OVER_DUE" == status ||
"OVERDUE" == status ? "OVERDUE" :
"BAD_DEBT" == status ||
"BADDEBT" == status ? "BADDEBT" :
"FAILED" == status ? "FAILED" :
"CLOSED" == status ? "CLOSED" : "UNKNOWN"
从这可以看到如果 status == IN_PROGRESS,那么 sta 就等于 REPAYING,这个就是返回的内容,接着按照你的需求写代码即可
最后
python爬人人贷代码视频_Python爬虫 - 人人贷散标相关推荐
- python爬微信公众号视频_python爬虫公众号所有信息,并批量下载公众号视频
之前写过一篇类似的文章:python爬取公众号,用最简单的方式爬虫 还有同学一直在问,可能中间有一些小细节不明确,这次彻底明确一下细节. 本篇添加一个批量下载公众号内视频的功能,可以实现完全复制一个公 ...
- python爬app无水印视频_Python爬虫:短视频平台无水印下载 (上)
导入: 虽然目前有些软件还没适配,但是,我发了 Blink 后有一写人留言或者私信找我要源码,不过我还在增加适配的软件,所以还没有时间写这篇博客,今天呢,就先把我目前适配了的代码拿出来,后续还会继续适 ...
- python爬虫源码下载 视频_Python爬虫下载视频文件部分源码
importrequestsimporttime headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebK ...
- python爬微信公众号视频_python爬虫微信公众号视频
import time import json import random import csv from selenium import webdriver from lxml import htm ...
- python爬取数据的原理_Python爬虫原理
前言 简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML.JS.CSS代码返回给浏览器,这些代码经过浏览器解析.渲染,将丰富多彩的网页呈现我们眼前: 一.爬虫是什 ...
- python爬取虎扑评论_python爬虫系列Selenium定向爬取虎扑篮球图片详解
前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员 ...
- python爬取链家新房_Python爬虫实战:爬取链家网二手房数据
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 买房装修,是每个人都要经历的重要事情之一.相对于新房交易市场来说,如今的二手房交易市场一点也 ...
- python爬取网页数据流程_Python爬虫爬取数据的步骤
爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...
- python爬取多页数据_python爬虫实现爬取同一个网站的多页数据代码实例
本篇文章小编给大家分享一下python爬虫实现爬取同一个网站的多页数据代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 一.爬虫的目的 从网上获 ...
最新文章
- java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误
- 支持向量机原理讲解(一)
- 【Java基础】异常处理与输入输出流
- Android webview加载pdf实验成功
- 文本分类数据集_181个NLP教程,481个文本数据集,Colab一键直达,无需环境配置...
- 华为最新开源框架mindspore学习
- Python机器学习---KNN模型评价、追求
- 这部纪录片央视发力了,每一帧都可以当壁纸,BBC也无法超越
- Flash Player Control for ASP.NET
- 图像处理——SIFT算法
- SEO优化 SEO基础
- 规则引擎Drools使用 第十一篇 Drools 的高级语法之LHS增强
- 基本流水线与记分牌算法和Tomasulo算法
- 爬虫增加代理池:使用稳定第三方芝麻代理IP 教程(详细可用)
- 花指令的原理、常用花指令收集及花指令示例
- 【Machine Learning】梯度下降算法介绍_02
- HCIE面试题之交换机和路由器收到未知表项数据包如何处理
- java技术晨讲可以讲什么内容,晨讲和晨测都是提升郑州达内小伙们技能的好方法...
- linux修改英文设置密码,linux 如何修改passwd的密码 设置密码
- 安装报错:TypeError: _classify_installed_files() got an unexpected keyword argument ‘cmake_install_dir‘
热门文章
- NOIP2011聪明的质检员
- macbook视频格式转换_Mac App Store 上的“一键视频格式转换器”
- 【C语言初阶】操作符之 位运算符详解(“ << ”,“ >> ”,“ ”,“ | ”,“ ^ ”,“ ~ ”)
- 字体像素html,Chrome中的字体像素问题(HTML5 / CSS3)
- 尚硅谷-Linux学习
- PairProject 总结
- GSM上行频率和下行频率、3G频率分配
- c语言删除括号内的字符,去括号 (C语言代码)
- 大学生交友平台——项目启动篇
- 安卓图案解锁NC13585