文档章节

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爬虫框架Scrapy架构和爬取糗事百科段子结果

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

铁扇公主1
2017/05/24
123
0
Python爬虫--抓取糗事百科段子

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

周东尧
2016/08/22
179
1
Ubuntu16.04下Scrapy环境的搭建

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

dyc2005
2017/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

以太坊总结

一、概念说明 1.以太坊(Ethereum blockchain)由V神(Vitalik Buterin)发明,是一个交易记录的永久数据库,它以一个“无信任”的交易系统来运行,不需要任何第三方信任机构即可进行点对点的...

盼望明天
30分钟前
1
0
Java并发工具类——AtomicInteger

基本类型int的递增等操作并不是线程安全的,加上synchronized又会影响性能,因此在并发情况下我们应该使用AtomicInteger,下面通过一个例子验证一哈。 public class TestAtomicInteger {...

东都大狼狗
32分钟前
1
0
基于CentOS7.2系统对RabbitMQ单机版安装过程

准备虚拟机系统 我的系统如下 系统版本7.2 安装perl yum install perl 安装wget工具 yum install -y wget 安装相关依赖工具 yum install ncurses ncurses-base ncurses-devel ncurses-libs ...

凌晨一点
36分钟前
1
0
Maven常用命令

Maven常用命令 说到命令,则不得不提一下环境变量,在之前的博文中简单提了一下环境变量的配置,这里具体说一下。说完环境变量的配置,然后就是Maven的常用命令,这里说的是常用的几个命令,...

星汉
52分钟前
0
0
Flink操作mysql kafka和hbase

主程序 package com.streaming.flink;import java.util.Properties;import org.apache.flink.api.common.functions.FlatMapFunction;import org.apache.flink.api.common.functi......

守望者之父
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部