首先请大家谅解,尤其是消金和财务的同仁,作为服务台的工作很细很碎,你们的问题我正在处理,很快就会上线。

在年前放假的前两天,同业的征征叫住了笔者,指着某票据交易所的界面问道,这上面的数据能不能复制下来。

笔者看了一下这个破界面,心里暗道这个不直接可以选中复制,然后粘贴到excel里不就OK,但毕竟是同业部提出来的问题,肯定没那么简单,所以征征指出了一个严肃的问题:

这个网页没有批量导出的功能,也就是说如果他要看一个月的利率或者收益率,需要像个傻子一样依次点击日期,再复制粘贴到表里,2021年第一季度都快过了一半了,怎么还会有这么浪费人力的系统?是可忍,孰不可忍?!

于是笔者研究了一下这个网站,打算写一个爬虫,替同业部节省一点人力资源,不要把宝贵的时间浪费在这种低端工作中。

所谓的爬虫说到底就是哲学的三个终极问题:我是谁?我从哪来?我要去哪?错了,是数据结构是什么样的?数据从哪里获取?数据最后要呈现到什么状态?

首先看数据结构:从图上看,数据非常简单,不同的日期、期限有着不同的利率和收益率,而且只有工作日有数据,节假日与周末没有数据。

再看数据如何获取?

这个网页是个明显的动态网页,而且有反爬虫机制,使用最简单的urllib库直接就被503拒绝掉,此时有两种方案:方案A,使用selenium库,模拟点击日期,然后复制数据,最后导出。但是这个方法有很大的缺陷,首先是要在电脑上安装高版本的谷歌浏览器(这个不难)和对应的webdriver(这个就有点麻烦了),其次点击时会调用一个谷歌浏览器进程,众所周知谷歌浏览器进程是出了名的吃内存,一旦浏览器卡住(同业的老爷机是必然会被卡住的)就前功尽弃,最重要的是这种模拟点击的方式为了绕过反爬虫机制每次操作不能太快,所以效率低下。

只能使用方案B:使用requests和fake_useragent库伪造成正常用户来获取信息。

说起来简单,干起来也不复杂,只需要导入两个库即可:

然后使用fake_useragent伪造一个正常的head:

然后重点来了,开始分析这个网页,看是如何进行交互的:

打开谷歌浏览器,打开开发者工具,刷新网页,随便查询几个日期,在Network中的XHR仔细观察,发现了端倪:虽然这是个动态网页(我猜用的Ajax),但是是用的POST请求数据,然后服务器返回了一个JSON值。

返回的值如下:

这正是我们需要的。

OK,需求分析完毕,正式开始整代码,首先要获取开始日期和结束日期,为了避免无效请求,要排除掉周末,所以做了如下操作:

用户输入开始和结束日期,然后生成每一天,存到一个列表中,再依次读取这个列表中的日期,拼接到伪造的POST请求中。

说起来简单,做起来就有点麻烦,关键在于Python中各种数据类型的转换非常复杂,一点也不像Java严谨(php万岁)。

首先是获取开始和结束日期,然后生成每一天,把每一天添加进循环中(之所以这么干是因为Python的循环看起来简单,用起来复杂,嵌套起来会很可怕,所以干脆拆开循环)

然后使用datetime判断是否为工作日,如果是工作日,就继续:

因为用户输入的是yyyymmdd格式(20210210),但是post请求时yyyy-mm-dd格式,所以需要进行格式转换,先转换成字符串,在提取前四位、中二位、后二位,用横杠连接:

然后把拼接完毕的日期写入payload中,配合伪造的head数据向服务器请求数据:

然后使用 BeautifulSoup和lxml整理数据,再使用看起来很复杂、写起来很复杂但熟悉了以后很简单的正则表达式处理数据:

为了防止太过分,所以加点间隔时间,避免引起对方的警觉:

最后把获取的数据存到dataframe,写入到excel中,搞定!

最后,一个爬虫写了70多行也是醉了。

python把excel填充到网页_Python获取某网页数据并写入excel相关推荐

  1. Java工具总结:将数据内容写入excel文件

    Java工具总结:将数据内容写入excel文件 文章目录 Java工具总结:将数据内容写入excel文件 一.背景 二.功能描述 三.使用该工具类:Java代码演示 四.分析代码 4.1 几个重要的J ...

  2. python爬取豆瓣电影top250并保存为xlsx_python抓取豆瓣电影Top250数据并写入Excel

    douban python抓取豆瓣电影Top250数据并写入Excel 1.将目标网站上的页面抓取下来 2.将抓取下来的数据根据一定的规则进行提取 create table `tb_movie`( i ...

  3. python爬虫爬取彩票中奖数字,简单计算概率并写入Excel文件中

    一.爬取网页数据所使用到的库 1.获取网络请求requests.BeautifulSoup2.写入excel文件openpyxl.pprint.column_index_from_string注意co ...

  4. python从数据库取数据保存为excel_python读取数据库表数据并写入excel

    #!/usr/bin/env python#-*- coding: utf-8 -*- '''@Time : 2020/1/1 18:08 @Author : Jason.Jia @contact: ...

  5. python列表逐行写入excel_python表格数据到excel-想问下python3怎么将列表数据逐行写入excel表格呢?...

    如何用python将数据写入excel表格 简介绍一下这两个库,先说xlrd,这个Excel比较,各种方法使用起来方便: bk = xlrd.open_workbook('your.xls') sh ...

  6. xlsxwriter写行合并_使用xlsxwriter将pandas数据框写入excel并包含“write-rich”字符串格式...

    以下是可复制的,并产生所需的输出. import xlsxwriter, pandas as pd workbook = xlsxwriter.Workbook('pandas_with_rich_s ...

  7. python扩展库xlwt支持对_python第三方库——xlrd和xlwt操作Excel文件学习

    一.xlrd和xlwt的安装 xlrd和xlwt是python的第三方库,所以是需要自己安装的,可以在python的官网https://pypi.python.org/pypi下载该模块来安装,也可以 ...

  8. .net excel循环插数据_Python实战: 如何将数据从一个Excel文件移动到另一个?

    使用Python中的Pandas库,我们可以从源Excel文件中获取数据并将其插入到新的Excel文件中,然后命名并保存该文件.当您需要深入到特定数据和/或重新格式化报表的数据时,这很有用. 作为一个 ...

  9. python爬取json简单吗_Python爬取Json数据的示例

    Python教程栏目介绍爬取Json数据实例 相关免费学习推荐:python教程(视频) 本文中以爬取其中的AI流转率数据为例. 该地址返回的响应内容为Json类型,其中红框标记的项即为AI流转率值: ...

  10. 使用python批量提取txt中的数据并写入excel

    本人是编程小白,同时也是一名准毕业研究生,在处理众多数据时总是要花很多时间来做重复的工作以提取出需要的数据,让我十分头疼.我无法忍受这种低效的工作,于是便开始尝试使用Python进行编程来批量处理数据 ...

最新文章

  1. node给java发送文件_如何实现node上传文件到后台?
  2. Javascript基础知识 - 基础部分
  3. mysql 数据库 限制大小_MySQL数据库表各种大小限制小结
  4. linux内存释放和使用限制
  5. 红帽企业linux4参考指南读书笔记-GRUB引导器
  6. 十进制小数转换二进制的问题
  7. Vue (响应式原理-模拟-2-Observer)
  8. 4后期盒子叫什么_考研:什么叫跨考专业?跨考专业的4大原因和存在3个方面的困难...
  9. postgresql某进程占用cpu资源过高,降不下来
  10. iptables快速记忆总结
  11. 心得体会计算机辅助设计实训,cad实训的心得体会模板
  12. 统计分析之:正态性检验——SPSS操作指南
  13. mysql执行sql流程_mysql 执行sql流程
  14. linux限制用户只能访问网站,Linux中限制用户访问权限的3种方法
  15. 关于mvn repository的one more step人机验证问题的解决
  16. DispatcherServlet详细分析
  17. 新手小白开始学习verilog(学习方法有点歪门邪道的,大佬勿喷( ̄▽ ̄)“)
  18. 人体脂肪的形成及如何消耗
  19. spring boot多数据源配置示例
  20. 事业上如何运用“长尾理论”?

热门文章

  1. Windows API函数大全(精心总结)
  2. 秩和比(RSR)指标计算
  3. miscrosoft visio 2003记
  4. linux ppsspp速度,PPSSPP模拟器详细使用技巧
  5. c# 设为首页和加入收藏代码
  6. 服务器IIS配置添加下载扩展名
  7. MPQ文档布局分析[转帖]
  8. php手机网站制作程序,phpcms制作手机WAP网站模板二次开发教程
  9. 单循环赛积分至少多少才能保证一定出线?
  10. 鸿蒙系统官网电脑版,华为鸿蒙系统官方pc版下载-华为鸿蒙系统官方电脑pc版 -优盘手机站...