zoukankan      html  css  js  c++  java
  • 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:UsershaseeDesktopTest.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)
  • 相关阅读:
    215. Kth Largest Element in an Array
    214. Shortest Palindrome
    213. House Robber II
    212. Word Search II
    210 Course ScheduleII
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    sql 开发经验
  • 原文地址:https://www.cnblogs.com/chrischeng/p/7050027.html
Copyright © 2011-2022 走看看