python--代码规范
2015-04-15 16:48
381 查看
抓取网页指定信息
这里是拿一帖吧做例子,主要要求:1.只抓取楼主发的帖子(这里通过分析URL看出只显示楼主帖子的网页地址后面会加“see_lz=1&pn=1”这个参数)2.显示帖子页数,内容
定义了几个方法:
getPage(self,pageNum) 通过传入pageNum的值得到想访问url的页面
getTitle(self) 获取楼主帖子标题
getPageNum(self) 抓取页面的总页数,和回复数
getContent(self) 显示所有评论
定义方法 然后调用,看起来比较清晰,每个抓取的内容都用不同的方法定义起来。方法之间有关联
这里是拿一帖吧做例子,主要要求:1.只抓取楼主发的帖子(这里通过分析URL看出只显示楼主帖子的网页地址后面会加“see_lz=1&pn=1”这个参数)2.显示帖子页数,内容
定义了几个方法:
getPage(self,pageNum) 通过传入pageNum的值得到想访问url的页面
getTitle(self) 获取楼主帖子标题
getPageNum(self) 抓取页面的总页数,和回复数
getContent(self) 显示所有评论
定义方法 然后调用,看起来比较清晰,每个抓取的内容都用不同的方法定义起来。方法之间有关联
import urllib import urllib2 import re class BDTB: #初始化,传入基地址,是否只看楼主的参数 def __init__(self,baseUrl,seeLZ): self.baseURL = baseUrl self.seeLZ = '?see_lz='+str(seeLZ) #传入页码,获取该页帖子的代码 def getPage(self,pageNum): try: url = self.baseURL + self.seeLZ+ '&pn=' + str(pageNum) #request = urllib2.Request(url) #response = urllib2.urlopen(request) #print response.read() response = urllib2.urlopen(url).read() #print response #测试输出的网页 return response except urllib2.URLError, e: if hasattr(e,"reason"): print u"连接百度贴吧失败,错误原因",e.reason return None def getTitle(self): page = self.getPage(1) pattern = re.compile('<h1 class="core_title_txt.*?>(.*?)</h1>',re.S) result = re.search(pattern,page) if result: print result.group(1) #测试输出 return result.group(1).strip() else: return None def getPageNum(self): page=self.getPage(1) pattern=re.search("<span[^>]+>(\d+)</span>回复贴,共<span[^>]+>(\d+)</span>页",page) #pattern=re.search("<span[^>]+>(\d+)</span>回复贴,共<span[^>]+>(\d+)</span>页",page) if (pattern!=None): print pattern.group(1)+'条回复' print pattern.group(2)+'页' #pattern=re.compile('<li class="l_reply_num.*?><span[^>]+>(\d+)</span>') #只能抓取到第一个<span></span>对 #print re.findall("<span.*?>(.*?)</span>",page ) #result=re.findall(pattern,page) #if pattern: # print result.group() #测试输出 #return result.group(1).strip() #else: #return None def getContent(self): page=self.getPage(1) pattern=re.compile ("<div id=\"post_content.*?>(.*?)</div>") result=re.findall(pattern,page) for i in result: print i baseURL = 'http://tieba.baidu.com/p/3138733512' bdtb = BDTB(baseURL,1) bdtb.getPage(1) bdtb.getTitle() bdtb.getPageNum() bdtb.getContent()
相关文章推荐
- 代码命名大小写规范(Java,Python)
- 如何使用 Pylint 来规范 Python 代码风格
- 如何使用 Pylint 来规范 Python 代码风格
- python代码格式规范
- Python 代码规范
- Python编程遵循的PEP8代码规范
- 使用pylint 规范python代码
- python代码规范
- 老李分享:pep8 python代码规范 1
- Python代码项目目录规范v1.0
- Python笔记_002_代码规范
- Python代码规范
- 如何使用 Pylint 来规范 Python 代码风格
- Python代码规范与pylint
- autopep8规范你的python代码
- 老李分享:pep8 python代码规范 2
- 如何使用 Pylint 来规范 Python 代码风格
- Python 代码规范
- python代码检查工具pylint 让你的python更规范
- 如何使用 Pylint 来规范 Python 代码风格