python爬虫糗事百科
博客专区 > zhaobig 的博客 > 博客详情
python爬虫糗事百科
zhaobig 发表于1个月前
python爬虫糗事百科
  • 发表于 1个月前
  • 阅读 1
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

#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()
共有 人打赏支持
粉丝 0
博文 5
码字总数 5529
×
zhaobig
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: