文档章节

python爬虫糗事百科

zhaobig
 zhaobig
发布于 2017/09/11 20:35
字数 592
阅读 3
收藏 0
#coding:utf-8 import urllib2
import re
# 工具类 class Tools(object):
    remove_n = re.compile(r'\n')
    replace_br = re.compile(r'<br>|<br>')
    remove_ele = re.compile(r'<.*?>', re.S)
    #rs 参数,要进行替换的数据  def replace_rs(self,rs):
        name = re.sub(self.remove_n, '', rs[0])
        content = re.sub(self.remove_n, '', rs[2])
        content = re.sub(self.replace_br, r'\n', content)
        content = re.sub(self.remove_ele, '', content)
        dz_tuple = (name, rs[1], content, rs[3], rs[4])
        # 返回处理后的元组  return dz_tuple
#糗事百科爬虫类 class QSBK(object):
    '''  1.根据url地址获取网页源代码  2.从网页源代码中提取想要的数据  3.存储或展示数据  '''  #把爬虫需要的基础设置进行初始化  def __init__(self):
        #爬虫基础url地址,不包含参数部分  self.baseURL = 'https://www.qiushibaike.com/hot/page'  #请求头  self.headers = {
            'User-Agent':'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'  }
        # 创建一个Tools对象,把对象赋值self的tool属性  # 在整个爬虫的过程中,只创建一个Tools工具类的对象  self.tool = Tools()

    #根据页码获取HTML源代码  def get_page(self,num):
        #1、根据num拼接完整的URL地址  #str()转化为字符串,int()转换为整数  url = self.baseURL+str(num)
        #2.创建request对象  request=urllib2.Request(url,headers=self.headers)
        # 3. 发起请求,接收响应  try:
            response = urllib2.urlopen(request)
        except (urllib2.URLError,Exception),e:
            print '连接糗事百科失败,原因:%s'%e
            #获取失败,返回None  return None  else:
            # 返回页码对应的HTMl源代码  return response.read()
    #从一段html源代码中获取数据  def get_data(self,html):
        # 1.准备正则表达式  pattern = re.compile(
            r'<div class="author clearfix">.*?<h2>(.*?)</h2>.*?Icon">(.*?)</div>.*?class="content">(.*?)</span>.*?<i class="number">(.*?)</i>.*?<i class="number">(.*?)</i>',
            re.S)
        # 2.根据正则表达式筛选数据  results = re.findall(pattern, html)
        # 准备列表,存放处理后的数据  rs_data =[]
        # 3.处理筛选出的数据  for rs in results:
            dz_tuple = self.tool.replace_rs(rs)
            # 把元组放在列表中  rs_data.append(dz_tuple)
        # 4.返回处理后的数据  return rs_data
    #对象函数,开始爬虫  def start(self):
        #1.根据某一页页码,获取该页的HTML源代码  html = self.get_page(1)
        # 2.如果获取到的html源代码不为None,则从源代码中提取数据  if html == None:
            return  rs_data = self.get_data(html)

        for rs in rs_data:
            s = raw_input('敲击回车查看下一条段子,输入Q结束:')
            if s == 'Q':
                print '程序结束!'  break  print '用户名:%s 年龄:%s 好笑数:%s 评论数:%s'%(rs[0],rs[1],rs[3],rs[4])
            print rs[2]
            print '\n' if __name__ == '__main__':
    #创建QSBK对象  qsbk = QSBK()
    qsbk.start()

© 著作权归作者所有

共有 人打赏支持
zhaobig
粉丝 0
博文 5
码字总数 5529
作品 0
省直辖县级行政区划
私信 提问
分享我自己写的一套Python爬虫学习经验

最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多。学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫感兴...

崔庆才
2015/02/23
3.7K
25
Python分分钟爬取糗事百科,让自己充满内涵

使用Python爬取糗事百科 代码如下: 必须加上head否则无法抓取. 学习资料也可以加下Python扣扣裙:四八三五四六四一六自己下载学习下 虽然核心部分已经完成了,但是还需要将代码更改为面向对...

python达人
05/19
0
0
总结最近学习的如何编写gtalk机器人

只能说开放的协议给我们了太多可能, 加phzggzs@gmail.com发送 -qsbk 可获取最新的糗事百科 闲话少说: 使用python库 简单的代码

旧城的骁珖
2011/09/25
616
1
Python爬虫(十八)_多线程糗事百科案例

多线程糗事百科案例 案例要求参考上一个糗事百科单进程案例:http://www.cnblogs.com/miqi1992/p/8081929.html Queue(队列对象) Queue是python中的标准库,可以直接引用;队列时线程间最常用的...

小七奇奇
2017/12/21
0
0
Python爬虫--抓取糗事百科段子

今天使用python爬虫实现了自动抓取糗事百科的段子,因为糗事百科不需要登录,抓取比较简单。程序每按一次回车输出一条段子,代码参考了 http://cuiqingcai.com/990.html 但该博主的代码似乎有...

周东尧
2016/08/22
179
1

没有更多内容

加载失败,请刷新页面

加载更多

js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
昨天
13
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
昨天
35
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部