曾静的技术博客

但行好事,莫问前程.

嗨,我是曾静 (@devzeng),目前暂居深圳。


这是我用来记录平日学习笔记的地方,欢迎您的访问.

合理使用Python助力iOS开发

说明:本文并不是介绍关于Python如何使用或者是Python的语法知识的,重点是分享在开发中使用Python来减少重复性的劳动的思路。

python_logo.png

Python是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议 。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。

除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。

许多大型网站就是用Python开发的,例如YouTube、Instagram,还有国内的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美国航空航天局)都大量地使用Python。

###安装Python第三方模块

在Python中,安装第三方模块,是通过包管理工具pip完成的,在终端中尝试运行pip如果提示未找到该命令,需要先安装pip。

(1)下载pip的安装脚本

wget https://bootstrap.pypa.io/get-pip.py

(2)执行安装脚本,安装pip

sudo python get-pip.py 

一般来说,第三方库都会在Python官方的pypi.python.org网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索。比如使用比较频繁的一个用于解析HTML的库BeautifulSoup,因此安装BeautifulSoup的命令为:

pip install BeautifulSoup

只要耐心等待下载并安装后,就可以使用了。另外其他常用的第三方库还有MySQL的驱动:mysql-connector-python,用于科学计算的NumPy库:numpy,用于生成文本的模板工具Jinja2,等等。

###案例

1、抓取http://blog.devzeng.com网站下面的所有文章的名称和链接。适用于模拟爬虫的功能,将某些网站上面的数据抓取回来。

#!/usr/bin/python
#-*- coding: utf-8 -*-
#encoding=utf-8

import urllib,re,json,time,sys
from BeautifulSoup import BeautifulSoup

#获取指定的URL的内容
def getHtmlContent(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

#获取全部的文章的链接
def getAllHtmlLink(html, url):
	arr = []
	pattern = u'<a.*?href="(.+)".*?>(.*?)</a>'
	soup = BeautifulSoup(html)
	articleResult = soup.findAll('article')
	for article in articleResult:
		h1Result = article.findAll('h1')
		for h1 in h1Result:
			aResult = h1.findAll('a')
			for a in aResult:
				ret = re.search(pattern, str(a))
				if ret:
					map = {}
					group = ret.groups()
					map['title'] = group[1]
					map['link'] = url + group[0]
					arr.append(map)
	return arr

#转换成JSON字符串
def toJSONString(arr):
	return json.dumps(arr)

#保存内容到文件
def saveToFile(path, json):
	fp = open(path, 'w')
	fp.write(json)
	fp.close()

if __name__=="__main__":
	start = time.time()
	url = "http://blog.devzeng.com"
	html = getHtmlContent(url + "/blog/archives")
	result = getAllHtmlLink(html, url)
	json = toJSONString(result)
	print type(json.encode('utf-8').decode('utf-8'))
	saveToFile("blog.txt", json)
	c = time.time() - start
	print('执行完成,程序运行耗时:%0.2fs'%(c))

说明:

(1)依赖BeautifulSoup模块,使用前需要先安装BeautifulSoup

(2)思路是先读取网址的HTML内容,然后解析HTML中的指定的链接标签分析里面的数据然后整合到一起

(3)def开头的是函数,函数名后面有冒号,没有花括号的区分用代码缩进来判断是不是一个代码块的内容。

2、前段时间的项目是使用WebService作为网络API接口,为了保证请求参数的完整和顺序的一致需要将WSDL文件下载下来进行解析。但是每次手动的处理都是一件很费体力的事情,而且经常容易遗漏一些东西。使用Python之后就极大的方便了我们的开发。

#!/usr/bin/python
#-*- coding: utf-8 -*-
#encoding=utf-8

import urllib,re
from BeautifulSoup import BeautifulSoup

#获取指定的URL的内容
def getHtmlContent(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

#获取全部的超链接的内容
def getAllHrefLink(url, html):
        soup = BeautifulSoup(html)
        aResult = soup.findAll('a')
        pattern = u'<a.*?href="(.+)".*?>(.*?)</a>'
        for a in aResult:
            ret = re.search(pattern, str(a))
            if ret:
                group = ret.groups()
                name = group[1].replace('.asmx', '.xml')
                link = url+group[0]
                if name != u'[To Parent Directory]':
                    saveData(name, link)

#保存文本内容到指定的路径                
def saveData(path, content):
    f = open(path,'w+')
    f.write(content)

#调用函数
url = "http://192.168.1.101:8080"
content = getHtmlContent(url + "/Services/")
getAllHrefLink(url, content)

###参考资料

1、《Python官网》

2、《Python 3.0教程》

3、《Python 2.7教程》

4、《python字符串操作》

最近的文章

初识Apple Watch应用开发

自发布iOS8.2 SDK和Xcode6.2来,大家对于WatchKit的关注就不绝于耳。特别随着Apple Watch的发售一大批的Apple Watch的应用就如雨后春笋一般涌入AppStore。本文对《WatchKit Programming Guide》中提到的相关概念结合目前的各方资料进行整理,重点介绍在Apple Watch开发中的一些基本概念和数据通信方面的内容。###配置Xcode添加Watch应用1、使用最新的Xcode(Xcode 6.2及以上)打开现有的iOS项目2、...…

iOS继续阅读
更早的文章

iOS开发中集成Reveal

Reveal 是一个界面调试工具。使用Reveal,我们可以在iOS开发时动态地查看和修改应用程序的界面。它类似Chrome的“审查元素”功能,我们不但可以在运行时看到iOS程序的界面层级关系,还可以实时地修改程序界面,不用重新运行程序就可以看到修改之后的效果。在使用时,我们将Reveal连接上模拟器或真机上正在运行的iOS程序,然后就可以查看和调试iOS程序的界面。###下载安装Releal官方提供试用版本,免费试用期是30天,功能和正式版没有差别.点此下载。###配置Reveal###...…

iOS继续阅读