有一篇有关爬取P2P网站上散标投资数据和借贷人的信息数据的博文,整合前人资料(http://sanwen8.cn/p/156w57U.html),说一下爬取中遇到的问题:
(一)首先分析"散标投资"这一个模块,共有51个页面
- 进入首页,调用360浏览器的F12(界面如下)选择Network->XHR
后在上图中左侧点击到第2个页面,右侧那一栏会弹出3个事件(对其中Method为GET的那一个事件进行分析)
点击Header,对General->Requesl URL, 和Request Headers->User-Agent 进行分析(后文中会用到)
仔细观察Request URL:http://www.we.com/lend/loanList!json.action?pageIndex=2&_=1474379219318,你会发现数据是Json格式,查看下一页,发现也是如此,不同页面的数据格式是相同的。对此,我们的抓取思路就是:获取网页源代码,从源代码中提取数据。
数据来自于类似这样的地址:http://www.we.com/lend/loanList!json.action?pageIndex=2&_=1457395836611,删除&_=1457395836611后的链接依然有效,打开链接发现是json格式的数据,而且数据就是当前页面的数据。至此,我们就找到了真正的数据来源。
以下就是爬取"散标列表"数据的代码(Python 3.5.2 |Anaconda 4.0.0 (64-bit),低版本好像不能解析utf-8)
要想配置高版本见http://www.cnblogs.com/Yiutto/p/5631930.html
import pandas as pd import numpy as np import requests headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'} #headers得根据自己的浏览器F12下自行修改调整,具体可见步骤c #自定义了一个解析网页的函数 def parse_html(i): url = "http://www.we.com/lend/loanList!json.action?pageIndex=%s&" % i #数据的真正来源(<strong>Request <a href="URL:http://www.we.com/lend/loanList!json.action?pageIndex=2&_=1474379219318">URL</a></strong>) resp=requests.get(url,headers=headers) #获取页面 html=resp.json() #页面文字 data=pd.DataFrame(html['data']['loans']) data.to_csv('loans%s.csv' % i) #将整理后的数据写入csv格式文档 print("%s successsed" % i)
(页面总共51个,可自己写个循环语句,但循环过程中可能出错,我自己就是一个个页面爬取的,然后再把51个页面的数据loan整合)
总的来说,第一步为得是给第二步做铺垫,因为第二步需要用到第一步中loans.csv中的loanId,可自行将其单独整理为一个csv文档。
(二)如何获取借贷人信息 a.点击其中一栏即可进入借贷人信息
为什么看不到借贷人信息呢,首先你的搞到一个帐号登录即可见(自己随便注册一个啦)
b.帐号登录后,按F12,刚开始又是空白,如下图
这时只要刷新一下页面,然后找到Method为Get的事件,点击打开
记住Request Headers->Cookie, 后面代码需要用到它
c.爬取借贷人信息的源代码
整理出来的数据可能会有点乱,但总的来说还是不错的。(相信大家还是能清理的)