python web编程-web客户端编程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python web编程-web客户端编程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4567字,纯文字阅读大概需要7分钟。
内容图文
web应用也遵循客户服务器架构
浏览器就是一个基本的web客户端,她实现两个基本功能,一个是从web服务器下载文件,另一个是渲染文件
同浏览器具有类似功能以实现简单的web客户端的模块式urllib以及urllib2(可以打开需要登录的网页)等模块
另外还有一些负载的web客户端,它不仅下载web文件,还执行其它复杂的任务,一个典型的例子就是爬虫
python实现爬虫也有一些框架模块:如Scrapy
- 为 Google 和Yahoo 这类大型的搜索引擎建索引
- 脱机浏览—将文档下载到本地,重新设定超链接,为本地浏览器创建镜像。(这个需求就是通常所说的下载整个在线的帮助文档)
- 下载并保存历史记录或框架
- Web 页的缓存,节省再次访问Web 站点的下载时间。
1 # !/usr/bin/env python 2 3 from sys import argv 4from os import makedirs, unlink, sep 5from os.path import isdir, exists, dirname, splitext 6from string import replace, find, lower 7from htmllib import HTMLParser 8from urllib import urlretrieve 9from urlparse import urlparse, urljoin 10from formatter import DumbWriter, AbstractFormatter 11from cStringIO import StringIO 12 13class Retriever(object): # download Web pages 14 15def__init__(self, url): 16 self.url = url 17 self.file = self.filename(url) 18 19def filename(self, url, deffile=‘index.htm‘): 20 parsedurl = urlparse(url, ‘http:‘, 0) # parse path 21 path = parsedurl[1] + parsedurl[2] 22 ext = splitext(path) 23if ext[1] == ‘‘: 24if path[-1] == ‘/‘: 25 path += deffile 26else: 27 path += ‘/‘ + deffile 28 ldir = dirname(path) # local directory 29if sep != ‘/‘: # os-indep. path separator 30 ldir = replace(ldir, ‘,‘, sep) 31ifnot isdir(ldir): # create archive dir if nec. 32if exists(ldir): unlink(ldir) 33 makedirs(ldir) 34return path 35 36def download(self): # download Web page 37try: 38 retval = urllib.urlretrieve(self.url, self.file) 39except IOError: 40 retval = (‘*** ERROR: invalid URL "%s"‘ % 41 self.url, ) 42return retval 43 44def parseAndGetLinks(self): # pars HTML, save links 45 self.parser = HTMLParser(AbstractFormatter( 46 DumbWriter(StringIO()))) 47 self.parser.feed(open(self.file).read()) 48 self.parser.close() 49return self.parse.anchorlist 50 51class Crawler(object): # manage entire crawling process 52 53 count = 0 # static downloaded page counter 54 55def__init__(self, url): 56 self.q = [url] 57 self.seen = [] 58 self.dom = urlparse(url)[1] 59 60def getPage(self, url): 61 r = Retriever(url) 62 retval = r.download() 63if retval[0] == ‘*‘: # error situation, do not parse 64print retval, ‘... skipping parse‘ 65return 66 Crawler.count = Crawler.count + 1 67print‘\n(‘, Crawler.count, ‘)‘ 68print‘URL:‘, url 69print‘FILE:‘, retval[0] 70 self.seen.append(url) 71 72 links = r.parseAndGetLinks() # get and process links 73for eachLink in links: 74if eachLink[:4] != ‘http‘and 75 find(eachLink, ‘://‘) == -1: 76 eachLink = urljoin(url, eachLink) 77print‘* ‘, eachLink, 78 79if find(lower(eachLink), ‘mailto:‘) != -1: 80print‘... discarded, mailto link‘ 81continue 82 83if eachLink notin self.seen: 84if find(eachLink, self.dom) == -1: 85print‘... discarded, not in domain‘ 86else: 87if eachLink notin self.q: 88 self.q.append(eachLink) 89print‘... new, added to Q‘ 90else: 91print‘... discarded, already in Q‘ 92else: 93print‘... discarded, already processed‘ 94 95def go(self): # process links in queue 96while self.q: 97 url = self.q.pop() 98 self.getPage(url) 99100def main(): 101if len(argv) > 1: 102 url = argv[1] 103else: 104try: 105 url = raw_input(‘Enter starting URL: ‘) 106except (KeyboardInterrupt, EOFError): 107 url = ‘‘108109ifnot url: return110 robot = Crawler(url) 111 robot.go() 112113if__name__ == ‘__main__‘: 114 main()
原文:http://www.cnblogs.com/wybert/p/4077230.html
内容总结
以上是互联网集市为您收集整理的python web编程-web客户端编程全部内容,希望文章能够帮你解决python web编程-web客户端编程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。