提取网址的python练习
2015-07-23 17:40
567 查看
import urllib, urllib2, cookielib from HTMLParser import HTMLParser import sys reload(sys) sys.setdefaultencoding('utf8') class WebParser(HTMLParser): def __init__(self, links, path): HTMLParser.__init__(self) self.links = links self.path = path def handle_starttag(self, tag, attrs): if tag == 'a': if len(attrs) == 0: pass else: for (key, val) in attrs: if key == 'href': if val.startswith('http'): self.links.add(val) elif val.startswith('/'): self.links.add(self.path + val) class Crawl: def __init__(self): self.path = 'http://www.baidu.com' self.cookie = cookielib.CookieJar() handler = urllib2.HTTPCookieProcessor(self.cookie) self.opener = urllib2.build_opener(handler) def open(self, path): self.response = self.opener.open(path) def showCookie(self): for item in self.cookie: print 'Name = ' + item.name print 'value = ' + item.value def showResponse(self): print self.response.read() def getAllUrl(self, links, path): try: self.open(path) res = self.response.read() parser = WebParser(links, path) parser.feed(res) parser.close() except Exception, e: print e def crawl(self): src_links = set() result_links = set() self.getAllUrl(src_links, self.path) n = 200 while len(src_links) != 0 and n > 0: link = src_links.pop() if link in result_links: pass result_links.add(link) self.getAllUrl(src_links, link) n -= 1 print n return result_links | src_links c = Crawl() rlt = c.crawl() for link in rlt: print link
相关文章推荐
- Python开发MySQL数据库(表)克隆工具
- 初识python django, 让我们一起进入python的世界吧
- 实习小记-python 内置函数__eq__函数引发的探索
- 各种Python插件安装包下载地址
- 在 python 使用socket 获取 IP
- Python 时间,日期,时间戳(一)
- python获取本机网卡IP
- 搞清楚 Python traceback
- python2.7系列下的print函数使用注意事项
- Python异常模块traceback用法举例
- 基于python实现的改变HTML、txt文件编码脚本
- Python编程练习题
- 使用Python和Blender来学习3D编程
- Python 爬虫解码问题解决
- Python文件夹与文件的操作
- python基本语法
- python __slots__ 使你的代码更加节省内存
- python- shutil 高级文件操作
- Json概述以及python对json的相关操作《转》
- Python学习笔记(三)------列表