文档章节

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
省直辖县级行政区划
私信 提问
加载中

评论(0)

利用python爬取糗事百科的用户及段子

最近正在学习python爬虫,爬虫可以做很多有趣的事,本文利用python爬虫来爬取糗事百科的用户以及段子,我们需要利用python获取糗事百科一个页面的用户以及段子,就需要匹配两次,然后将获取的...

LSFan
2018/01/28
0
0
python爬虫(2)——urllib、get和post请求、异常处理、浏览器伪装

urllib基础 urlretrieve() urlretrieve(网址,本地文件存储地址) 直接下载网页到本地 urlcleanup() 清除缓存 info() 查看网页简介 getcode() 输出网页爬取状态码,200为正常,其他都不正常 ge...

osc_g8254g7s
2019/08/19
4
0
分享我自己写的一套Python爬虫学习经验

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

崔庆才
2015/02/23
4.1K
25
python爬虫之Scrapy框架(CrawSpider)

需求 想要爬去糗事百科全站的数据 方法: (1)基于Scrapy框架中的Spider的递归爬去实现 (2) 基于Scrapy框架的CrawlSpider的自动爬取来进行实现 那么CrawlSpider又是什么呢?如何实现它的自...

osc_gay6i4ve
2019/03/05
4
0
python爬虫30 | scrapy后续,把「糗事百科」的段子爬下来然后存到数据库中

上回我们说到 python爬虫29 | 使用scrapy爬取糗事百科的例子,告诉你它有多厉害! WOW!! scrapy awesome!! 怎么会有这么牛逼的框架 wow!! awesome!! 用 scrapy 来爬取数据 岂!不!是...

osc_bq1qsg6s
2019/05/22
4
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL Not exists - 一个你不需要会的语法

not exists - 就是字面意思: 不存在. A表里某个字段的值不在B表里; 返回符合条件的A表记录. 如: select a.id, a.codefrom table_a a where not exists ( select b.code from table_...

园领T
27分钟前
11
0
零基础Python学习路线及每个阶段学习目标

零基础Python学习路线及阶段学习目标,首先应该夯实Python核心基础、Web前端编程、Django开发框架、Flask开发框架、爬虫与数据分析等知识,理解机器学习相关的基本概念及系统处理流程。 零基...

每天学Python
30分钟前
18
0
编译flink 源码

首先clone源码 git clone git://github.com/apache/flink.git 然后切换到blink分支 git checkout blink 编辑 flink-filesystems 下的pom文件,注释掉 mapr,如下 <modules><module......

jingshishengxu
34分钟前
28
0
springBoot之配置文件的读取以及过滤器和拦截器的使用

springBoot之配置文件的读取以及过滤器和拦截器的使用 前言 在之前的学习springBoot中,成功的实现了Restful风格的基本服务。但是想将之前的工程作为一个项目来说,那些是仅仅不够的。可能还...

鹏十二
49分钟前
33
0
Springboot在Idea Intellij汉字Unicode读取乱码问题

问题核心:Unicode编码中的字母需要小写。比如\u8bbe\u5907\u53f7 首先,了解清楚Unicode编码是什么东西。请读者自己搜索。 然后,我们要清楚springboot是怎么加载配置文件的。兴趣的读者可以...

sunranhou
54分钟前
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部