Python处理Excel文件实例代码
作者:Berne 发布时间:2022-02-15 23:13:01
标签:Python,Excel
因为工作需求,需要审核一部分query内容是否有效,query储存在Excel中,文本内容为页面的Title,而页面的URL以HyperLink的格式关联到每个Cell。
于是本能的想到用Python读取Excel文件之后进行文本分析,之后对每个链接进行一次HttpRequest,通过分析HttpResponse的内容来判断当前链接是否有效。
于是上网搜了下,发现比较主流的是用xlrd的插件,但是实际使用过程中发现,无论如何,最终获取的hyperlink_map值一直都是None,也没空去分析到底是为什么。最后经过搜索发现一个叫xlwings的Python库,可以有效使用。
xlwings:Python For Excel
具体的代码如下:
# -*- coding=utf-8 -*-
import xlwings as xw
import urllib
import sys
type = sys.getfilesystemencoding()
def get_html(url):
page = urllib.urlopen(url)
html = page.read()
return unzip(html)
## Debug的时候发现无论怎样做Decode,最后的结果都是乱码
## 后来发现是因为对应的网页做了压缩处理,所以需要对获取的网页内容手动解压缩
def unzip(data):
import gzip
import StringIO
data = StringIO.StringIO(data)
gz = gzip.GzipFile(fileobj=data)
data = gz.read()
gz.close()
return data
wb = xw.Book(r"C:\Users\hasee\Desktop\Test.xlsx")
main_data = wb.sheets["Sheet2"]
## 通过获取Last Cell来确定当前Sheet的有效行数与列数
rownum = main_data.range('A1').current_region.last_cell.row
colnum = main_data.range('A1').current_region.last_cell.column
## 定位column对应的列
col_dict = {"2":"B","3":"C","4":"D","5":"E","6":"F"}
for row in range(1, rownum + 1):
for col in range(2, colnum + 1):
query = main_data.range(row, 1).value
cell = main_data.range(row, col)
link = cell.hyperlink
html = get_html(link)
if "error-container" in html:
print "%s,%s,%s,%s" % (query, col_dict.get(str(col))+str(row), cell.value, cell.hyperlink)
## 对无效的链接所属的Cell染色,直接写入文件
cell.color = (253,218,4)
来源:http://www.cnblogs.com/chrischeng/p/7050027.html?utm_source=tuicool&utm_medium=referral


猜你喜欢
- 一、 升级前准备工作1、 确认数据库版本使用dba登陆查询当前数据库的版本SQL> select * from v$version;
- 字符串类型代码的执行字符串类型代码的执行函数有三个,都是Python的内置函数。eval()执行字符串类型的代码,并返回最终结果。exec(
- 前言kylin是一个开源的OLAP分析引擎,具有亚秒级查询大表的能力通过kylin提供的cube预构建功能,省去了不断写sql查询hive的
- ASP(英文全称Active Server Pages)是一个编程环境,在其中,可以混合使用HTML、脚本语言以及组件来创建服务器端功能强大
- 1 引言这段时间在研究美团爬虫,用的是scrapy-redis分布式爬虫框架,奈何scrapy-redis与scrapy框架不同,默认只发送
- 刚看到一个朋友写的用javascript连接excel数据库的程序,想把它改成access数据库的,就找到了这两篇文章 ----------
- reshape(shape) : 不改变数组元素,返回一个shape形状的数组,原数组不变。是对每行元素进行处理resize(shape)
- python svm实现手写数字识别——直接可用最近在做个围棋识别的项目,需要识别下面的数字,如下图:我发现现在网上很多代码是良莠不齐,…真
- 本文实例讲述了Python编码类型转换方法。分享给大家供大家参考,具体如下:1:Python和unicode为了正确处理多语言文本,Pyth
- 什么是多态?多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charl
- 链表的反转是一个很常见、很基础的数据结构题,输入一个单向链表,输出逆序反转后的链表,如图:上面的链表转换成下面的链表。实现链表反转有两种方式
- 1.连接测试连接是否成功:import redisr = redis.Redis(host='192.168.136.102'
- 1、导入第三方库import urllib.request,urllib.error #请求网页from bs4 import
- 什么是索引拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为
- 本文实例讲述了python sqlite的Row对象操作。分享给大家供大家参考,具体如下:一 代码import sqlite3conn=sq
- gettext 是GNU 提供的一套 国际化与本地化 处理的相关函数库。大多数语言都有对应的gettext实现。本文主要使用jed 来实现g
- 一般说来,你会把模板以文件的方式存储在文件系统中,但是你也可以使用自定义的 template loaders 从其他来源加载模板。Djang
- 当下基本所有的目标检测类的任务都会选择基于深度学习的方式,诸如:YOLO、SSD、RCNN等等,这一领域不乏有很多出色的模型,而且还在持续地
- 应用场景:1、授权(Authorization)装饰器能有助于检查某个人是否被授权去使用一个web应用的端点(endpoint)。它们被大量
- 如何获取指定元素在想要获取元素上添加“ref” ref="scroll&quo