广东电网有限责任公司东莞供电局信息中心
摘要:企业经营风险预警系统是东莞供电局自主研发的信息系统,该系统的主要功能是通过互联网数据分析,来预测企业的经营风险,推荐出高风险经营企业,以协助营销部门的电费回收工作。本系统的抓取模块主要用到的技术是Python,本文将对Python技术在本系统中的应用进行叙述,为Python的使用者提供参考。
关键字:企业经营风险、管理系统、Python、抓取技术
目前,由于企业电力用户破产给东莞供电局带来的电费回收问题是该局市场营销工作中的一个突出的问题。2014年底,东莞某企业突然破企,拖欠该局2000多万电费,给该局带来了非常大的电费回收压力。东莞局有重多的电力大客户,这些企业以港资、台资等外资企业为主。这些企业具有用电量大、资金流动快等特点,存在较大的电力欠费风险。受到国内外的经济形式的影响,具体由于资金链断裂、上级公司影响等原因,在莞企业突然倒闭、老板跑路的现象时有发生。一但以上现象发生,势必会给该局的电费回收造成不利的影响,严重的会给我局带来较大的经济损失。
企业经营风险预警系统是东莞供电局自主研发的信息系统,该系统的主要功能是通过互联网数据分析,来预测企业的经营风险,推荐出高风险经营企业,以协助营销部门的电费回收工作。本系统的抓取模块主要用到的技术是Python,本文将对Python技术在本系统中的应用进行叙述,为Python的使用者提供参考。
一、Python技术综述
Python 不仅仅是一个设计优秀的程序语言,它能够完成现实中的各种任务,包括开发者们日复一日所做的事情。作为编制其他组件、实现独立程序的工具,它通常应用于各种领域。实际上,作为一种通用语言,Python 的应用角色几乎是无限的:你可以在任何场合应用Python, 从网站和游戏开发到机器人和航天飞机控制。
Python 对操作系统服务的内置接口,使其成为编写可移植的维护操作系统的管理工具和部件(有时也被称为Shell 工具)的理想工具。Python 程序可以搜索文件和目录树,可以运行其他程序,用进程或线程进行并行处理等等。Python 的简洁以及快速的开发周期十分适合开发GUI 程序。Python 内置了TKinter 的标准面向对象接口Tk GUI API,使Python 程序可以生成可移植的本地观感的GUI 。
Python 提供了标准Internet 模块,使Python 能够广泛地在多种网络任务中发挥作用,无论是在服务器端还是在客户端都是如此。脚本可以通过套接字进行通信;从发给服务器端的CGI 脚本的表单中解析信息;通过URL 获取网页;从获取的网页中解析HTML 和XML 文件;通过XML-RPC 、SOAP 和Telnet 通信等。Python 的库使这一切变得相当简单。
在介绍Python 作为控制语言时,曾涉及它的组件集成的角色。Python 可以通过C/C++ 系统进行扩展,并能够嵌套C/C++ 系统的特性,使其能够作为一种灵活的粘合语言,脚本化处理其他系统和组件的行为。例如,将一个C库集成到Python 中,能够利用Python 进行测试并调用库中的其他组件;将Python 嵌入到产品中,在不需要重新编译整个产品或分发源代码的情况下,能够进行产品的单独定制。
二、本系统中Python应用研究
(一)Python调用MySql数据库
首先在Python文件的头部引用MySql数据库的类库,,MySQLdb为MySQL操作的类库,通过import语句将库引入到python编程环境中,并将其命名为mdb,接下来可直接用mdb来引用该类库。
图1给出了MySql数据库的连接代码。利用mdb下的connect函数来连接数据库,该函数包含四个参数,第一个是MySql所在的数据库,localhost代表本地;第二个参数是MySql数据库的用户名,本例中的用户名为root用户;第三个参数是密码;第四个参数是连接后默认连接的数据库,如果在数据库连接中没有指明默认数据库的话,需在后续代码中作单独说明。通过mdb.connect函数创建的连接被赋给了conn变量,但conn变量还不能直接执行sql语名,而需利用conn下的游标函数cursor()获得一个游标cur,cur对象即可用来执行sql语句,图一中的第三条语句即是使用cur的execute函数执行了“set names utf8”语句,执行了将编码规则设为utf-8编码的操作。
(二)Python调用PhantomJs
PhantomJs是一个基于webkit内核的无头浏览器,即没有UI界面,即它就是一个浏览器,只是其内的点击、翻页等人为相关操作需要程序设计实现。提供javascript API接口,即通过编写js程序可以直接与webkit内核交互,在此之上可以结合java语言等,通过java调用js等相关操作,从而解决了以前c/c++才能比较好的基于webkit开发优质采集器的限制。提供windows、linux、mac等不同os的安装使用包,也就是说可以在不同平台上二次开发采集项目或是自动项目测试等工作。
在Python中调用Phantomjs需使用到webdriver类库,在Python文件头需添加引用,,将webdriver引用到编程环境中。直接对网页进行抓取往往不便于后期的内容解析,这是因为其它包含了非html代码,PhantomJS可以将非html代码进行解析,返回纯html代码。利用webdriver下的PhantomJS()方法获得一个driver变量,利用driver变量下的get函数进行url初始化,并对相应的网址内容进行解析,再利用driver下的page_source保存了对应网址的html代码内容。
(三)利用BeautifulSoup解析Html代码
Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
使用之前需对其进行引用,引用代码为,使用BeautifulSoup类时,需要使用html字符串构建一个Beautiful对象,,其中html为html字符串,“html.parser”表示使用html解析器对字符串进行解析。如图3所示,getCommentPublisherFromComment函数接收一个BeautifulSoup对象bpComment,利用find函数查找属性值名为class,属性值为W_texta W_fb的标签,如果没有,则返回空;否则,返回该标签nick-name的属性值。
三、结束语
企业经营风险预警系统是东莞供电局自主研发的信息系统,该系统的主要功能是通过互联网数据分析,来预测企业的经营风险,推荐出高风险经营企业,以协助营销部门的电费回收工作。本系统的抓取模块主要用到的技术是Python,本文将对Python技术在本系统中的应用进行叙述,为Python的使用者提供参考。
论文作者:于辉
论文发表刊物:《电力技术》2016年第4期
论文发表时间:2016/7/25
标签:企业论文; 东莞论文; 电费论文; 函数论文; 经营风险论文; 代码论文; 供电局论文; 《电力技术》2016年第4期论文;