web页面和本地数据对比问题
缘起
最近工作上出现了遇到了几个类似的问题:页面上有值,excel里有值,需要比较二者是否一致。小麻烦有:
1.对于页面上的值,有时是页面表格里的一列或几列,无法直接勾选并复制出来。即便复制出来,也很不整齐。
2.数据多,只以肉眼比较,让人怀疑人生。
对策
记录下自己目前的解决方案:
1.用Chrome的开发者工具,在network一页中,查看POST的内容,得到json字符串。
也可以用Chrome插件xpath finder找到某一条记录的xpath,再改动xpath,让其定位整列,这样在插件内部就可以直接复制到想要的值
2.用python读入excel特定列的内容,与从页面上取到的值比较。
记录
1.

获得的json字符串未必规整,可以在notepad++中去掉反斜杠。想要查看,可以在一些网站处理,看起来更舒服些(如http://jsonprettyprint.com/)
对想要获取的列,选取一个元素,查看其xpath地址,贴到xpath helper中,修改高一级节点,就能定位整列。


2.
用pyton读取excel里的值,只需要使用openpyxl库即可。比较数据差异,可使用python的集合对象,既可去重,又可求差集,可谓简便。
import json
from openpyxl import load_workbook def process(filename, column):
info_list = []
workbook = load_workbook(filename)
worksheet = workbook.active
for i in range(2, worksheet.max_row+1):
info_list.append(worksheet.cell(row=i, column=column).value)
return info_list # json字符串
raw_str = '''
{\"mate\":{\"success\":true,\"message\":\"00001\",\"status\":200},\"data\":{\"ItemInfo\":{\"PG1\":[{\"PG1\":\"256\"},{\"PG1\":\"456\"}],\"PG2\":[{\"PG2\":\"257\"},{\"PG2\":\"732\"}]}}}
''' # 转为pyhton对象
o = json.loads(raw_str) # 取到想要的信息
pg1 = o['data']['ItemInfo']['PG1']
pg2 = o['data']['ItemInfo']['PG2']
pg1_list = []
pg2_list = []
for i in pg1:
pg1_list.append(i['PG1'])
for j in pg2:
pg2_list.append(j['PG2']) ex_pg1 = process(r'C:\Users\username\Desktop\pg.xlsx', 2)
ex_pg2 = process(r'C:\Users\username\Desktop\pg.xlsx', 3) # 利用集合,既可去重,也可求其差集,见其区别
pg1_diff = set(ex_pg1) - set(pg11)
pg2_diff = set(ex_pg2) - set(pg22)
print(pg1_diff, pg2_diff)
web页面和本地数据对比问题的更多相关文章
- 细说Web页面与本地电脑通讯
话说在很久很久以前.Web页面与客户的本地电脑Localhost通讯,有两种方式: 1.Flash 2.ActiveX控件 由于Flash本人不是很了解,也给出不了什么示例代码, 对于ActiveX控 ...
- 【问题记录】— web页面调用本地程序
起因: 最近由于项目需要在web页面中调用本地部署的exe程序:进而对该功能实现做了对应了解:以及存在的问题进行记录. 要实现该功能就不得不说浏览器自定义协议:解决办法:那么它是什么呢? 浏览器自定义 ...
- 使用flask框架实现web页面与数据库数据互联+常见的几种状态码
1.通过cygwin从pip install两个包:PyMySQL.SQLAlchemy: 2.在app.py中import我们要用到的库中的包:create_engine,text :from sq ...
- 通过django搭建一个简易的web页面(实现数据的查询、添加、修改、删除)
一.创建django项目 通过命令创建: django-admin startproject 项目名称 创建app应用 python3 manage.py startapp 应用名 #这里manage ...
- web页面打开本地app(判断是否安装)
在应用宝中有APP申请链接: //是否可以打开App不可以跳则到下载页 $(".downNow button").on("click",function(){ ...
- 转:Web页面通过URL地址传递参数常见问题及检测方法
Web页面即我们在浏览器中所看到的网页,在Web应用程序中,其页面往往需要进行动态切换和数据交互,页面间的数据常规传递方法有多种,本文主要介绍Web页面处理程序中常见的URL地址参数传递方法,包括概述 ...
- 临时存存储页面上的数据---Web存储
HTML5 Web存储的两种方法使用 localStorage和sessionStorage 参考: http://www.cnblogs.com/taoweiji/archive/2012/12/0 ...
- 【Egret】实现web页面操作PC端本地文件操作
Egret 实现web页面操作PC端本地文件操作: http://edn.egret.com/cn/book/page/pid/181 //------------------------------ ...
- .netMVC:Web页面向后台提交数据的方式和选择
众所周知Web前端页面主要由HTML/CSS/Javascript组成,当要通过与用户的交互实现各种功能时,就需要向后台提交一些数据或者操作.在Web世界里各种实现眼花缭乱,但究其根本,不外乎三种方式 ...
随机推荐
- 【bzoj2073】【[POI2004]PRZ】位运算枚举子集的特技
(上不了p站我要死了) Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上的人都不能超过一 ...
- c++复习——类(1)
1. 拷贝构造函数 //并没有搞懂 先存着吧 遇到实际情况再回来看看 拷贝构造函数在以下三种情况被调用: (1)当用一个已经初始化过的对象去初始化同类另一个对象时, 拷贝构造函数被调用. Samp ...
- 【转】解决ajax跨域问题的5种解决方案
转自: https://blog.csdn.net/itcats_cn/article/details/82318092 什么是跨域问题?跨域问题来源于JavaScript的"同源策略& ...
- 大数据学习第二章、HDFS相关概念
1.HDFS核心概念: 块 (1)为了分摊磁盘读写开销也就是大量数据间分摊磁盘寻址开销 (2)HDFS块比普通的文件块大很多,HDFS默认块大小为64MB,普通的只有几千kb 原因:1.支持面向大规模 ...
- Initialization of bean failed; nested exception is java.lang.
网上搜寻各种解说,applicationContext-hibernate.xml 配置错误,jar冲突等等 现场错误图: 解决方法: asm-attrs.jar cglib-nodep-2.1_3. ...
- codeforces 657C - Bear and Contribution [想法题]
题目链接: http://codeforces.com/problemset/problem/657/C ----------------------------------------------- ...
- 如何让ls按目录和文件 分开进行列表?
linux的思想是: 有很多 "小工具", 但是功能并不弱的 小工具, 组合起来完成一些复杂的工作, 通过 这些工具的组合可以完成各种各样的, 不同的任务. 如: ls, sort, hea ...
- firefox的group群组功能很好!
================================ /usr/share/themes中有一些主题,包括: adwaita: 阿德维塔, 不二论 anaconda等等. 计算机环境: f ...
- set_index()与reset_index()函数
一 set_index()函数 1 主要是理解drop和append参数,注意与reset_index()参数的不同. import pandas as pd df = pd.DataFrame({' ...
- Java ——数组 选择排序 冒泡排序
本节重点思维导图 数组 public static void main(String[] args) { int a ; a=3; int[] b; b = new int[3];//强制开辟内存空间 ...