文档章节

python爬虫糗事百科

zhaobig
 zhaobig
发布于 2017/09/11 20:35
字数 592
阅读 2
收藏 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爬取糗事百科 代码如下: 必须加上head否则无法抓取. 学习资料也可以加下Python扣扣裙:四八三五四六四一六自己下载学习下 虽然核心部分已经完成了,但是还需要将代码更改为面向对...

python达人
05/19
0
0
Python3.x实现简单爬虫—爬糗事百科

1、Python版本:3.5,urllib库, 2、爬取糗事百科24小时热门段子,第一页(网页地址:http://www.qiushibaike.com/hot/1) 3、使用正则匹配, re库 4、Python2的urllib、urllib2合并成pytoh...

大猩猩secrets
2016/10/25
47
0
Python爬虫--抓取糗事百科段子

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

周东尧
2016/08/22
179
1
Python爬虫框架Scrapy架构和爬取糗事百科段子结果

根据上篇文章《Python爬虫框架Scrapy之爬取糗事百科大量段子数据》(传送门:Python爬虫框架Scrapy之爬取糗事百科大量段子数据),写好了糗百段子的爬虫,接下来就是开始运行然后获取结果了。...

铁扇公主1
2017/05/24
123
0
Ubuntu16.04下Scrapy环境的搭建

一、Scrapy简介与部署环境 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的第三方爬虫框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。 最初是为了页面抓取...

dyc2005
2017/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
4
0
现场看路演了!

HiBlock
昨天
14
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
19
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部