爬取糗事百科的spider
来源:互联网 发布:mac好用的office软件 编辑:程序博客网 时间:2024/05/21 16:54
个人一直对网络爬虫感兴趣,最近使用python的flask框架开发了一个小型网站(有待改进)以及最近在学习深度学习的开源框架caffe,caffe提供了python接口。借此机会学习了一下python以及利用python开发爬虫。希望后面能够利用自己写的爬虫,爬取一些数据集用于caffe训练。
代码如下:
__author__ = 'JWL'# -*- coding:utf-8 -*-import urllibimport urllib2import reimport threadimport time#嗅事百科爬虫类class BK:#初始化方法,定义一些变量def __init__(self):self.pageIndex = 1self.user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' #初始化headersself.headers = {'User-Agent' : self.user_agent}#存放段子的变量,每一个元素是每一页的段子们self.stories = []#存放程序是否继续运行的变量self.enable = False#传入某一页的索引获得页面代码def getPage(self,pageIndex):try:url = 'http://www.qiushibaike.com/hot/page/' + str(pageIndex)#构建请求的requestrequest = urllib2.Request(url,headers = self.headers)#利用urlopen获取页面代码response = urllib2.urlopen(request)#将页面转化为UTF-8编码pageCode = response.read().decode('utf-8')return pageCodeexcept urllib2.URLError, e:if hasattr(e,"reason"): print u"连接糗事百科失败,错误原因",e.reason return Nonedef getPageItems(self,pageIndex):pageCode = self.getPage(pageIndex)if not pageCode:print "页面加载失败...."return Nonepattern = re.compile('<div class="author clearfix">.*?href.*?<img src.*?title=.*?<h2>(.*?)</h2>.*?<div class="content">(.*?)</div>.*?<i class="number">(.*?)</i>',re.S)items = re.findall(pattern,pageCode)#用来存储每页的段子们pageStories = []#遍历正则表达式匹配的信息for item in items:replaceBR = re.compile('<br/>')text = re.sub(replaceBR,"\n",item[1])pageStories.append([item[0].strip(),text.strip(),item[2].strip()])return pageStories#加载并提取页面的内容,加入到列表中def loadPage(self):#如果当前未看的页面少于2页,则加载新一页if self.enable == True:if len(self.stories) < 2:#获取新一页pageStories = self.getPageItems(self.pageIndex)#将该页的段子存入到全局的list中if pageStories:self.stories.append(pageStories)#获取完之后页面索引加一,表示下次读取下一页self.pageIndex += 1#调用该方法,每次敲回车打印输出一个段子def getOneStory(self,pageStories,page):#遍历一页的段子for story in pageStories:#等待用户输入input = raw_input()#每当输入回车一次,判断一下是否要加载新页面self.loadPage()#如果输入Q则程序结束if input == "Q":self.enable = Falsereturn print u"第%d页\t发布人:%s\t发布内容:%s\t赞:%s" %(page,story[0],story[1],story[2])#开始方法def start(self):print u"正在读取糗事百科,按回车查看新段子,Q退出"#使变量为True,程序可以正常运行self.enable = True#先加载一页内容self.loadPage()#局部变量,控制当前读到了第几页nowPage = 0while self.enable:if len(self.stories)>0:pageStories = self.stories[0]#当前读到的页数加一nowPage += 1#将全局list中第一个元素删除del self.stories[0]self.getOneStory(pageStories,nowPage)spider = BK()spider.start()
github地址:https://github.com/jingwanli6666/qiushibaike_spider
0 0
- 爬取糗事百科的spider
- 爬取糗事百科
- 爬取糗事百科
- 爬取糗事百科
- 爬取糗事百科
- 爬取糗事百科
- 爬取糗事百科的段子Demo
- PHP爬取糗事百科首页糗事
- [Python]爬取糗事百科
- 爬取糗事百科段子
- 简单爬取糗事百科
- 爬虫爬取糗事百科
- python 爬取糗事百科
- python爬取糗事百科
- 糗事百科段子爬取
- 爬取糗事百科数据
- python爬取糗事百科
- python3 爬取糗事百科
- oracle 11g 锁处理
- Denosing Autoencoder训练过程代码详解
- 如何制作可以直接带来销售转化的着陆页
- UE4加载播放网络上的视频
- java中缓冲读写buffer基础程序
- 爬取糗事百科的spider
- HTML练习---加盟申请表
- ScrollView嵌套ListView的问题
- Linux vi常用命令大全
- 官方文档才是王道:PonyDebugger安装坑的感悟;
- 每天一个算法练习之字符空格替换
- Web负载均衡的几种实现方式
- 10 Python 函数内使用全局变量注意项
- Android Studio导入Project、Module的正确方法