【go语言爬虫】网贷天眼数据平台爬虫

2024-09-07 07:38

本文主要是介绍【go语言爬虫】网贷天眼数据平台爬虫,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、需求分析
利用go语言抓取网贷天眼数据平台昨日数据
字段:
排序 平台名称 成交额 综合利率 投资人 借款周期 借款人 满标速度 累计贷款余额 资金净流入
抓取url:
http://www.p2peye.com/shuju/ptsj/

二、go语言爬虫实现源代码

package mainimport ("fmt""io/ioutil""net/http""time""os""regexp""github.com/axgle/mahonia")//定义新的数据类型
type Spider1 struct {url    stringheader map[string]string
}//定义 Spider get的方法
func (keyword Spider1) get_html_header() string {client := &http.Client{}req, err := http.NewRequest("GET", keyword.url, nil)if err != nil {}for key, value := range keyword.header {req.Header.Add(key, value)}resp, err := client.Do(req)if err != nil {}defer resp.Body.Close()body, err := ioutil.ReadAll(resp.Body)if err != nil {}return string(body)}func parse1() {header := map[string]string{"Host":"www.p2peye.com","Connection":"keep-alive","Cache-Control":"max-age=0","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8","Referer":"http://www.p2peye.com/shuju/hysj/","Accept-Language":"zh-CN,zh;q=0.8",}//创建excel文件f, err := os.Create("C:/p2p.xlsx")if err != nil {panic(err)}defer f.Close()//写入标题f.WriteString("排序"+"\t"+"平台名称"+"\t"+"成交额"+"\t" +"综合利率"+"\t"   +"投资人"+"\t"+"借款周期"+"\t"+"借款人"+"\t"+"满标速度"+"\t"+"累计贷款余额"+"\t"+"资金净流入"+"\r\n")url := "http://www.p2peye.com/shuju/ptsj/"spider := &Spider1{url, header}html := spider.get_html_header()//设置编码格式decoder := mahonia.NewDecoder("gbk")html1:=decoder.ConvertString(html)//排序pattern1 := `<td class="num">(.*?)</td>`rp1 := regexp.MustCompile(pattern1)find_txt1 := rp1.FindAllStringSubmatch(html1, -1)//平台名称pattern2 := ` onclick="return false" title="(.*)">`rp2 := regexp.MustCompile(pattern2)find_txt2 := rp2.FindAllStringSubmatch(html1, -1)//成交额pattern3 := `<td class="total">(.*?)</td>`rp3 := regexp.MustCompile(pattern3)find_txt3 := rp3.FindAllStringSubmatch(html1, -1)//综合利率pattern4 := `<td class="rate">(.*?)</td>`rp4 := regexp.MustCompile(pattern4)find_txt4 := rp4.FindAllStringSubmatch(html1, -1)//投资人pattern5 := `<td class="pnum">(.*?)</td>`rp5 := regexp.MustCompile(pattern5)find_txt5 := rp5.FindAllStringSubmatch(html1, -1)//借款周期pattern6 := `<td class="cycle">(.*?)</td>`rp6 := regexp.MustCompile(pattern6)find_txt6 := rp6.FindAllStringSubmatch(html1, -1)//借款人pattern7 := `<td class="p1num">(.*?)</td>`rp7 := regexp.MustCompile(pattern7)find_txt7 := rp7.FindAllStringSubmatch(html1, -1)//满标速度pattern8 := `<td class="fuload">(.*?)</td>`rp8 := regexp.MustCompile(pattern8)find_txt8 := rp8.FindAllStringSubmatch(html1, -1)//累计贷款余额pattern9 := `<td class="alltotal">(.*?)</td>`rp9 := regexp.MustCompile(pattern9)find_txt9 := rp9.FindAllStringSubmatch(html1, -1)//资金净流入pattern10 := `<td class="capital">(.*?)</td>`rp10 := regexp.MustCompile(pattern10)find_txt10 := rp10.FindAllStringSubmatch(html1, -1) 写入UTF-8 BOMf.WriteString("\xEF\xBB\xBF")   打印全部数据和写入excel文件for i := 0; i < len(find_txt1); i++ {fmt.Printf("%s  %s  %s  %s  %s  %s  %s  %s  %s  %s\n",find_txt1[i][1],find_txt2[i][1],find_txt3[i][1],find_txt4[i][1],find_txt5[i][1],find_txt6[i][1],find_txt7[i][1],find_txt8[i][1],find_txt9[i][1],find_txt10[i][1])f.WriteString(find_txt1[i][1] + "\t" + find_txt2[i][1] + "\t" + find_txt3[i][1] + "\t"+find_txt4[i][1] + "\t" + find_txt5[i][1] + "\t"+find_txt6[i][1] + "\t"+find_txt7[i][1] + "\t" + find_txt8[i][1] + "\t" + find_txt9[i][1] + "\t"+find_txt10[i][1] + "\r\n")}}func main() {t1 := time.Now() // get current timeparse1()elapsed := time.Since(t1)fmt.Println("爬虫结束,总共耗时: ", elapsed)}

这里写图片描述

这里写图片描述

这篇关于【go语言爬虫】网贷天眼数据平台爬虫的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144468

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

使用Go调用第三方API的方法详解

《使用Go调用第三方API的方法详解》在现代应用开发中,调用第三方API是非常常见的场景,比如获取天气预报、翻译文本、发送短信等,Go作为一门高效并发的编程语言,拥有强大的标准库和丰富的第三方库,可以... 目录引言一、准备工作二、案例1:调用天气查询 API1. 注册并获取 API Key2. 代码实现3