网贷之家中的p2p平台数据比较容易获取,重要的就是如何分析网页的源代码然后从里面提取自己需要的信息,也不需要用户登录,该网站的爬虫比较简单,主要用了urllib包来获取网页信息,用BeautifulSoup来解析网页,最后用正则表达式提取数据。这里就直接上源码了:

# -*- coding: utf-8 -*-
"""
Created on Wed Aug  8 18:22:26 2018@author: 95647
"""
import urllib
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import pandas as pdheaders = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
lists =[]
domains = "https://www.wdzj.com"def get_platform_site(url,lists):"""获取所有的平台网址"""
#    global listsreq = urllib.request.Request(url, headers=headers)html = urlopen(req)bsObj = BeautifulSoup(html,'lxml')title = bsObj.findAll("div",{'class':'itemTitle'})  for titles in title:links =  titles.findAll("a",{'target':'_blank'})for link in links:if 'href' in link.attrs:lists.append(link.attrs['href'])
#                print(link.attrs['href'])return lists                   #用utf-8进行解码def pages_num(url):"""获取各类平台的页面总数"""req = urllib.request.Request(url, headers=headers)html = urlopen(req)bsObj = BeautifulSoup(html,'lxml')    pages= bsObj.findAll("a",text = '尾页')for page in pages:if "currentnum" in page.attrs:pages_num = page.attrs["currentnum"]else:return Nonereturn pages_numdef conditions(i):"""获取各个平台的运营状态,生成包含各类平台的列表"""
#    global listslists =[]url_ = r"""https://www.wdzj.com/dangan/search?filter=e%s"""%str(i)all_pages_num = int(pages_num(url_))for num in range(1, all_pages_num +1):url = url_ + "&currentPage=%s"%str(num)lists = get_platform_site(url,lists)return listsoperations = conditions(1)   #正常运营平台
#close_transitions = conditions(2)  #停业或转型平台
#in_problems= conditions(3)   #问题平台def plat_profile(lists):"""抓取平台的数据"""global domainsplat_profile=[]for site in lists:plat_info =[]url = domains + sitereq = urllib.request.Request(url, headers=headers)html = urlopen(req)bsObj = BeautifulSoup(html,'lxml')plat_name = bsObj.findAll('h1')[0].attrs["alt"]               #平台名称t_l = bsObj.findAll("div",{"class":"pt-info"})[0].get_text()time_s=""location =""if len(t_l)>0:t_l = re.split("上线",t_l)                                     time_s = t_l[0].strip()                                  #上线时间location= t_l[1].strip()                                 #平台所属地域 common_data = bsObj.findAll("b",{"class":"tab_common_data"}) yield0 =""  #给出变量值duration = "" #给出变量值for data in common_data:text = data.parent.get_text()if len(re.findall(".*月.*",text)) > 0:duration = re.findall(".*月.*",text)[0]duration = text.strip()                              #平均期限if len(re.findall(".*%.*",text)) > 0:yield0 = re.findall(".*%.*",text)[0]yield0 = text.strip()                                #平均收益率 rates_ = bsObj.find("div",{"class":"dpxximg"})if "data-pl" in rates_.attrs:rates = bsObj.find("div",{"class":"dpxximg"}).attrs["data-pl"] #获取评分plat_pro = bsObj.findAll("div",{"class":"bgbox-bt zzfwbox"})plat_pro = BeautifulSoup(str(plat_pro),"lxml")L1 =[]L2 =[]zzzj = ""gqss = ""yhtg = ""           rzjl = ""            jgxh = ""            ICP = ""zdtb = ""zqzr = ""tbbz = ""bzms = ""    for div in plat_pro.findAll("div",{"class":"l"}):L1.append(div.get_text().strip())for div in plat_pro.findAll("div",{"class":"r"}):L2.append(div.get_text().strip())for slzz in L1:              #获取平台的备案信息if slzz =="注册资金":zzzj = L2[L1.index(slzz)]if slzz =="股权上市":gqss = L2[L1.index(slzz)].replace(" ","")if slzz =="银行存管":yhtg = L2[L1.index(slzz)]            if slzz =="融资记录":rzjl = L2[L1.index(slzz)].replace(" ","")            if slzz =="监管协会":jgxh = L2[L1.index(slzz)].replace(" ","")            if slzz =="ICP号":ICP = L2[L1.index(slzz)]if slzz =="自动投标":zdtb = L2[L1.index(slzz)]if slzz =="债券转让":zqzr = L2[L1.index(slzz)]            if slzz =="投标保障":tbbz = L2[L1.index(slzz)]if slzz =="保障模式":bzms = L2[L1.index(slzz)]         plat_info.append(plat_name)  #这个地放用了很笨的方法,一个个的添加元素到列表中,存在优化空间plat_info.append(time_s)plat_info.append(location)plat_info.append(duration)plat_info.append(yield0)plat_info.append(rates)plat_info.append(zzzj)plat_info.append(gqss)plat_info.append(yhtg)plat_info.append(rzjl)plat_info.append(jgxh)plat_info.append(ICP)plat_info.append(zdtb)plat_info.append(zqzr)plat_info.append(tbbz)plat_info.append(bzms)plat_profile.append(plat_info)print("------------->"+plat_name+str(lists.index(site)))  #打印爬取的平台信息return plat_profileplat_profile = plat_profile(conditions(1))  #conditions根据平台类型的不同来设置,为1则表示正常运营平台
name = ['平台名称','上线时间','区域','投资期限','平均收益率','评分','注册资金', '股权上市', '银行存管', '融资记录', '监管协会', 'ICP号', '自动投标', '债权转让', '投标保障', '保障模式']
operating = pd.DataFrame(columns=name,data= plat_profile)
operating.to_csv(r"""C:\Users\95647\Desktop\operating.csv""")   #path to save csvfile

写该代码之前,还没有学习panda的用法,所以简单粗暴的用列表和字典来解决问题,会使用pandas的朋友可以用pandas来进行优化。爬虫运行过程如下:

该爬虫运行速度很快,我爬取了100个正常运营平台的信息,才用了5分钟左右,部分爬虫结果如下:

有问题的和其他想法的朋友,欢迎加QQ:956471511交流,这里还有一篇关于如何爬取人人贷网站数据的博文,有兴趣的朋友可以看一下。手把手教你用python爬取人人贷借款人数据

用python爬取网贷之家p2p平台数据相关推荐

  1. 【python爬虫】爬取网贷之家所有P2P平台基本数据并写入MYsql数据库

    使用的是python3做的一个爬虫,主要用于爬取网贷之家上面的数据.比较粗糙,很多该封装的地方没有进行封装.如果需要每天进行的话,还需要人工进行操作.后期会考虑挂靠服务器定时进行爬取,哈哈先这么搞,剩 ...

  2. 金融爬虫python网贷_爬虫之爬取网贷之家在档P2P平台基本数据并存入数据库

    python 版本 :3.5.2 Jupyter Notebook 使用库: reuqests (For human) json (用来加载JSON数据) datetime (用来记录抓取所花时间,也 ...

  3. 爬虫之爬取网贷之家在档P2P平台基本数据并存入数据库

    python 版本 :3.5.2 Jupyter Notebook 使用库: reuqests (For human) json (用来加载JSON数据) datetime (用来记录抓取所花时间,也 ...

  4. 爬取网贷之家平台数据保存到mysql数据库

    # coding utf-8 import requests import json import datetime import pymysqluser_agent = 'User-Agent: M ...

  5. python爬取网易云_利用python爬取网易云音乐,并把数据存入mysql

    作者:sergiojune Python爱好者社区--专栏作者 个人公众号:日常学python 专注python爬虫,数据可视化,数据分析,python前端技术 公众号:Python爱好者社区 获取本 ...

  6. 利用python爬取网易云音乐,并把数据存入mysql

    点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 图片源自网络 作者 sergiojune 如需转载,请联系原作者授权. 在简单学习 ...

  7. 手把手教你用python爬取人人贷网站借款人信息

    P2P是近年来很热的一个行业,由于这个行业在国内兴起才不久,国内的很多学者对这个行业都兴趣盎然,在大学研究互联网金融的学者更是有一大群.小编是学金融出身,深知数据在做学术研究的重要性,之前有不少学互联 ...

  8. Python爬虫-网贷之家P2P机构排名查询

    python采用3.X版本,依赖三方库BeautifulSoup/requests/pymysql 由于最近P2P暴雷事件,写一个爬虫定时去爬取网贷之家对各个公司的排名及当前状况的分析,分为经营正常和 ...

  9. python爬取网易云音乐热评_python爬取网易云音乐评论

    本文实例为大家分享了python爬取网易云音乐评论的具体代码,供大家参考,具体内容如下 import requests import bs4 import json def get_hot_comme ...

最新文章

  1. elasticsearch 文档操作
  2. SAP MM 公司间STO的BILLING输出报错 - Inbound partner profile does not exist –
  3. php service原理,轻松搞懂WebService工作原理
  4. 留言本的漏洞挖掘总结
  5. hdu 5441 Travel(Kruskal+离线)
  6. iptables简单应用
  7. python迭代器使用_python迭代器的使用方法实例
  8. 考试系统试题实现(单选项)
  9. 图解集合6:LinkedHashMap
  10. 服务超时 — 基本原理
  11. java循环嵌套显示不全_循环嵌套问题
  12. CSS3动画框架 Animate.css
  13. Linux/Unix 中 wheel 组的来源
  14. 拓端tecdat|爬取微博用户行为数据语义分析数据挖掘报告
  15. UniX和类UNIX系统入侵检测方法
  16. 小学计算机专业说课稿模板,小学信息技术说课稿集锦
  17. Windows 最全CMD命令,带死机修复系统命令
  18. 互联网支付系统整体架构
  19. robosense激光雷达使用及适配autoware
  20. css设置兄弟元素样式-兄弟选择器

热门文章

  1. 视频教程-JSON入门基础视频课程-Java
  2. Talib常用函数图像形态识别
  3. PC微信扫描浏览器Cookies?腾讯:目前无法重现问题;华为手机分拆?官方否认;pip 21.0停止支持Python 3.5...
  4. 小米手机拦截返回音设置不了_MIUI 12第二批稳定版已完成全量推送:你的手机支持吗...
  5. IO控制器 IO控制方式(程序直接控制、中断驱动、DMA方式、通道控制方式)
  6. 使用ASP.NET做购物网站
  7. html抽奖原理,js实现抽奖功能
  8. Docker笔记(四)网络
  9. “短信拦截马”黑色产业链与溯源取证研究
  10. 江西省高考英语计算机智能口试,江西省高安市高三年级高考英语口语考试题.docx...