zoukankan      html  css  js  c++  java
  • Hadoop综合大作业

    1.用Hive对爬虫大作业产生的文本文件(或者英文词频统计下载的英文长篇小说)进行词频统计。

    • 启动hadoop
    • Hdfs上创建文件夹
    • 上传文件至hdfs
    •   准备文件song.txt:
    •  上传到hdfs/data文件中
    • 启动Hive
    • 创建原始文档表
    • 导入文件内容到表docs并查看

    • 词频统计

    • 查看结果

    • 2.用Hive对爬虫大作业产生的csv文件进行数据分析,写一篇博客描述你的分析过程和分析结果。
    • # coding=utf-8 
      import urllib 
      import urllib2 
      import cookielib 
      import re 
      import csv 
      import sys 

      class Pyw(): 
      #初始化数据 
      def __init__(self): 
      #登录的Url地址 
      self.LoginUrl="http://v.pyw.cn/login/check" 
      #所要获取的Url地址 
      self.PageUrl="http://v.pyw.cn/Data/accountdetail/%s" 
      # 传输的数据:用户名、密码、是否记住用户名 
      self.PostData = urllib.urlencode({ 
      "username": "15880xxxxxx", 
      "password": "a123456", 
      "remember": "1" 
      }) 
      #第几笔记录 
      self.PageIndex=0; 
      #循环获取共4页内容 
      self.PageTotal=1 
      #正则解析出tr 
      self.TrExp=re.compile("(?isu)<tr[^>]*>(.*?)</tr>") 
      #正则解析出td 
      self.TdExp = re.compile("(?isu)<td[^>]*>(.*?)</td>") 
      #创建cookie 
      self.cookie = cookielib.CookieJar() 
      #构建opener 
      self.opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookie)) 
      #解析页面总页数 
      self.Total=4 
      #####设置csv文件 
      self.CsvFileName="Pyw.csv" 
      #####存储Csv数据 
      self.CsvData=[] 

      #解析网页中的内容 
      def GetPageItem(self,PageHtml): 
      #循环取出Table中的所有行 
      for row in self.TrExp.findall(PageHtml): 
      #取出当前行的所有列 
      coloumn=self.TdExp.findall(row) 
      #判断符合的记录 
      if len(coloumn) == 9: 
      # print "游戏账号:%s" % coloumn[0].strip() 
      # print "用户类型:%s" % coloumn[1].strip() 
      # print "游戏名称:%s" % coloumn[2].strip() 
      # print "渠道:%s" % coloumn[3].strip() 
      # print "充值类型:%s" % coloumn[4].strip() 
      # print "充值金额:%s" % coloumn[5].strip().replace("¥", "") 
      # print "返利金额:%s" % coloumn[6].strip().replace("¥", "") 
      # print "单号:%s" % coloumn[7].strip() 
      # print "日期:%s" % coloumn[8].strip() 
      #拼凑行数据 
      d=[coloumn[0].strip(), 
      coloumn[1].strip(), 
      coloumn[2].strip(), 
      coloumn[3].strip(), 
      coloumn[4].strip(), 
      coloumn[5].strip().replace("¥", ""), 
      coloumn[6].strip().replace("¥", ""), 
      coloumn[7].strip(), 
      coloumn[8].strip()] 
      self.CsvData.append(d) 

      #模拟登录并获取页面数据 
      def GetPageHtml(self): 
      try: 
      #模拟登录 
      request=urllib2.Request(url=self.LoginUrl,data=self.PostData) 
      ResultHtml=self.opener.open(request) 
      #开始执行获取页面数据 
      while self.PageTotal<=self.Total: 
      #动态拼凑所要解析的Url 
      m_PageUrl = self.PageUrl % self.PageTotal 
      #计算当期第几页 
      self.PageTotal = self.PageTotal + 1 
      #获取当前解析页面的所有内容 
      ResultHtml=self.opener.open(m_PageUrl) 
      #解析网页中的内容 
      self.GetPageItem(ResultHtml.read()) 

      ####写入Csv文件中 
      with open(self.CsvFileName, 'wb') as csvfile: 
      spamwriter = csv.writer(csvfile, dialect='excel') 
      #设置标题 
      spamwriter.writerow(["游戏账号","用户类型","游戏名称","渠道","充值类型","充值金额","返利金额","单号","日期"]) 
      #将CsvData中的数据循环写入到CsvFileName文件中 
      for item in self.CsvData: 
      spamwriter.writerow(item) 

      print "成功导出CSV文件!" 
      except Exception,e: 
      print "404 error!%s" % e 
      #实例化类 
      p=Pyw() 
      #执行方法 
      p.GetPageHtml()

    导出结果

  • 相关阅读:
    如何使用php实现首页和子页面之间的交互
    用php实现,打开哪个页面哪个页面就有默认的样式
    后台链接前台有关显示不显示
    上传文件的最大值,post传值的最大值得修改
    linux 操作系统的安装,本地登录及远程登录,vnc连接操作详细步骤
    滑动组件
    Numpy简介
    java对象序列化
    集合类操作需要注意的地方
    TreeMap详解
  • 原文地址:https://www.cnblogs.com/xung/p/9083319.html
Copyright © 2011-2022 走看看