使用脚本简化工作
2012-07-10 22:25
183 查看
转载请注明出处:http://blog.csdn.net/horkychen
*今天新建了一个类别:生产力。主要想集中写一些提升工作效率的思考和实践,用技术解决问题。据说Google都有专门的生产力部门,专司研究工具和方法,可见生产力虽然零碎,但如果能有系统的加以研究,一定会些收获。
如果工作中有一些需要从网上获取资料的工作,比如获取哪些人还有多少Bug之类的事情,那么下面的内容或许可以给些启发。
网页数据基本是以HTTP Request获取数据。比如我这篇文章里提到了,使用XPath可以从CSDN博客上获得想要的数据。下面要讲的是服务器发回的是JSON数据。
首先找个HTTP Proxy或Web Sniffer之类的工具(参考这篇),找到获取数据的请求包,就可以清楚看到Request包的内容。下图是Charles的截图:
![](http://my.csdn.net/uploads/201207/10/1341929952_5254.png)
其中Host后的内容加上GET后的内容就是完整的Request URL,Cookie是当服务器需要认证时,要传送回去的资料(正常登录后就可以看到. FireFox&Chrome都有相关的组件可以管理Cookies) User-Agent建议也要记下,因为有些服务器会对这个值进行判断,当传入不支持的UA时,有可能得不到数据。
整个数据处理过程如下:
1. 准备一个带有指定头数据(Cookie & UA)的请求包,并发送给服务器。
2. 读取返回的数据。
3. 转换数据为可识别的数据格式。
4. 分析加工。
下面就是相关的代码,很简单!如果Mac OS下,可以使用这篇文章提到的方法,写个脚本执行并保存结果到文件中,然后使用open打开结果文件,就更方便了。
参考:
开发工作中使用的软件列表
懒人可以用Automator提高工作效率
使用脚本简化工作
程序员要学会偷懒---正确运用自动化技术
如何使用搜索技巧来成为一名高效的程序员
[《人件》摘录]: 生产力:赢得战役和输掉战争
*今天新建了一个类别:生产力。主要想集中写一些提升工作效率的思考和实践,用技术解决问题。据说Google都有专门的生产力部门,专司研究工具和方法,可见生产力虽然零碎,但如果能有系统的加以研究,一定会些收获。
如果工作中有一些需要从网上获取资料的工作,比如获取哪些人还有多少Bug之类的事情,那么下面的内容或许可以给些启发。
网页数据基本是以HTTP Request获取数据。比如我这篇文章里提到了,使用XPath可以从CSDN博客上获得想要的数据。下面要讲的是服务器发回的是JSON数据。
首先找个HTTP Proxy或Web Sniffer之类的工具(参考这篇),找到获取数据的请求包,就可以清楚看到Request包的内容。下图是Charles的截图:
![](http://my.csdn.net/uploads/201207/10/1341929952_5254.png)
其中Host后的内容加上GET后的内容就是完整的Request URL,Cookie是当服务器需要认证时,要传送回去的资料(正常登录后就可以看到. FireFox&Chrome都有相关的组件可以管理Cookies) User-Agent建议也要记下,因为有些服务器会对这个值进行判断,当传入不支持的UA时,有可能得不到数据。
整个数据处理过程如下:
1. 准备一个带有指定头数据(Cookie & UA)的请求包,并发送给服务器。
2. 读取返回的数据。
3. 转换数据为可识别的数据格式。
4. 分析加工。
下面就是相关的代码,很简单!如果Mac OS下,可以使用这篇文章提到的方法,写个脚本执行并保存结果到文件中,然后使用open打开结果文件,就更方便了。
#!/usr/bin/python # coding: utf-8 import urllib2,json outputKeys = {"id","name","description","text"} collectedRes = {} pointCount = 0 txtHeader = { "Origin": "http://xxxxx", "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5", "Cookie":"theme=gray; xxxxx=xxxxx"} url = "http://xxxxxxxxxxxxxxxxx" #check the point if was reported by our members #If true, count it and print the detail. def checkKey(data): if data.has_key("owner"): name = data["owner"] if members.count(name)>0: printDetail(data) #Print out the detail information for reference if collectedRes.has_key(name): collectedRes[name] = collectedRes[name]+1 else: collectedRes[name] = 1 #iterate the full dictionary and check each key def iterateDictionary(dict): for key in dict: if not key['hasitems']: checkKey(key) else: iterateDictionary(key["subitems"]) #print the summary result def printResult(): #FIXME:这里没有重名处理 print "\n\nSummary:" for key in collectedRes.keys(): print key, " : " ,collectedRes[key] def getURLData(): global url,txtHeader urlOpener = urllib2.build_opener() request = urllib2.Request(url, headers=txtHeader) url = urlOpener.open(request) page = url.read(500000) return page # Main entry of the auto building tool if __name__ =="__main__": #1. send the request and data page = getURLData() #2. convert JSON data to dictionary. pointDict = json.loads(page) #3. check all data in the dictionary. iterateDictionary(pointDict) #4. print the summary result. printResult()
参考:
开发工作中使用的软件列表
懒人可以用Automator提高工作效率
使用脚本简化工作
程序员要学会偷懒---正确运用自动化技术
如何使用搜索技巧来成为一名高效的程序员
[《人件》摘录]: 生产力:赢得战役和输掉战争
相关文章推荐
- K2.net中使用脚本,简化工作
- 使用批处理简化自己的工作
- adapter 使用 简化 让你的工作更加轻松
- MTK工作中可以使用的批处理脚本
- 查询ACCESS时使用通配符来简化工作
- 通过避免使用脚本编制元素来简化对 JSP 应用程序的软件维护
- 使用LLDB脚本简化打印复杂数据的操作
- 用脚本来简化iOS美术同学的工作
- shell脚本在日常工作中的使用--辅助生成代码
- Linux下使用Shell脚本改变当前工作路径
- OEL上使用yum install oracle-validated 简化主机配置工作
- 使用PowerShell简化我的工作
- 脚本的最大优势,就是简化工作步骤提高工作效率,你看出来了吗?有没有看到这段代码的作用呢?
- Linux下使用Shell脚本改变当前工作路径
- 如何使用部署实用工具和配置来简化在服务器之间移动软件包的工作
- 使用 Android Compatibility Package 来简化开发工作
- 封装一个通用递归算法,使用TreeIterator和TreeMap来简化你的开发工作。
- 用脚本来简化iOS美术同学的工作
- 8个工作使用而有趣的linux脚本
- 使用脚本来提高工作效率