python 网络爬虫(二) BFS不断抓URL并放到文件中
2013-09-10 11:51
507 查看
上一篇的python 网络爬虫(一) 简单demo 还不能叫爬虫,只能说基础吧,因为它没有自动化抓链接的功能。
本篇追加如下功能:
【1】广度优先搜索不断抓URL,直到队列为空
【2】把所有的URL写入文件中
【3】对于不可访问或错误访问的URL,有try except 处理
spider.py
本篇追加如下功能:
【1】广度优先搜索不断抓URL,直到队列为空
【2】把所有的URL写入文件中
【3】对于不可访问或错误访问的URL,有try except 处理
spider.py
# -*- coding: cp936 -*- import urllib,Queue,sgmllib,re,os class URLList(sgmllib.SGMLParser): def reset(self): sgmllib.SGMLParser.reset(self) #maxsize < 1 表示无穷队列 self.URLqueue = Queue.Queue(maxsize = -1) def start_a(self,attrs): href = [v for k,v in attrs if k == 'href'] if href: for u in href: #判断URL是不是正确的,href都必须有"http://" pat = re.compile(r'http://(.+?)') #False,0,'',[],{},()都可以视为假,也可以用len()==0判断列表为空 if len(re.findall(pat,u)) == 0: continue self.URLqueue.put(u) def getURLList(url,parser): try: URLdata = urllib.urlopen(url) parser.feed(URLdata.read()) URLdata.close() except: return startURL = "http://www.baidu.com" parser = URLList() getURLList(startURL,parser) outfile = startURL[7:len(startURL)]+".txt" out = open(outfile,'w+') try: #BFS while parser.URLqueue.empty() == False: url = parser.URLqueue.get() print url out.writelines(url+'\n') getURLList(url,parser) finally: parser.close() out.close()
相关文章推荐
- python 网络爬虫(二) BFS不断抓URL并放到文件中
- 【网络爬虫】【python】网络爬虫(四):scrapy爬虫框架(架构、win/linux安装、文件结构)
- python网络爬虫(一):网络爬虫科普与URL含义
- [Python]网络爬虫(一):抓取网页的含义和URL基本构成
- Python爬虫判断url链接的是下载文件还是html文件
- Python---对html文件内容进行搜索取出特定URL地址字符串,保存成列表,并使用每个url下载图片,并保存到硬盘上,使用正则re
- 将url放到配置文件
- python3_访问url、json、读写文件
- python实现文件路径和url相互转换的方法
- django中url,静态文件,POST请求的配置 分类: Python 2015-06-01 17:00 789人阅读 评论(0) 收藏
- [Python]网络爬虫(一):抓取网页的含义和URL基本构成
- [Python]网络爬虫(一):抓取网页的含义和URL基本构成
- python 使用 urllib.urlretrieve()下载网络图片,在本地打开提示文件损坏无法打开
- python下载文件(图片)源码,包含爬网内容(爬url),可保存cookie
- [Python]网络爬虫(一):抓取网页的含义和URL基本构成
- [Python]网络爬虫(一):抓取网页的含义和URL基本构成
- [Python]网络爬虫(一):抓取网页的含义和URL基本构成
- Python---对html文件内容进行搜索取出特定URL地址字符串,保存成列表,并使用每个url下载图片,并保存到硬盘上,使用bs4,beautifulsoup模块
- [Python]网络爬虫(二):利用urllib2通过指定的URL抓取网页内容
- 遍历目录并将目录下所有文件放到列表中-Python