zoukankan      html  css  js  c++  java
  • 数据结构化与保存

    1. 将新闻的正文内容保存到文本文件。

    f = open('gzccnews.txt','a',encoding='utf-8')
       f.write(content)
       f.close()
    

      

    2. 将新闻数据结构化为字典的列表:

    • 单条新闻的详情-->字典news
    • 一个列表页所有单条新闻汇总-->列表newsls.append(news)
    • 所有列表页的所有新闻汇总列表newstotal.extend(newsls)
      def getNewsDetail(newsUrl): #一篇新闻的全部信息
          resd = requests.get(newsUrl)
          resd.encoding = 'utf-8'
          soupd = BeautifulSoup(resd.text, 'html.parser')  # 打开新闻详情页
        
          news = {}
          news['title'] = soupd.select('.show-title')[0].text
          info = soupd.select('.show-info')[0].text
         # c = soupd.select('#content')[0].text  # 正文
          dt = info.lstrip('发布时间:')[:19]  # 发布时间
          news['dati'] = datetime.strptime(dt, '%Y-%m-%d %H:%M:%S')
          if info.find('来源:') > 0:
              news['source'] = info[info.find('来源:'):].split()[0].lstrip('来源:')
          else:
              news['source'] = 'none'
          #news['content']  = soupd.select('.show-content')[0].text.strip()
          #writeNewsDetail(news['content'])
          news['click ']= getClickCount(newsUrl)
          news['newsUrl']=newsUrl
          return (news)
        
      def getListPage(pageUrl): #一个列表页的全部新闻
          res = requests.get(pageUrl)
          res.encoding = 'utf-8'
          soup = BeautifulSoup(res.text,'html.parser')
          newslist =[]
          for news in soup.select('li'):
              if len(news.select('.news-list-title')) > 0:
                  newsUrl = news.select('a')[0].attrs['href']  # 链接
                  newslist.append(getNewsDetail(newsUrl))
          return (newslist)
        
      newstotal =[]
      firstPageUrl='http://news.gzcc.cn/html/xiaoyuanxinwen/'
      newstotal.extend(getListPage(firstPageUrl))
      

        

    3. 安装pandas,用pandas.DataFrame(newstotal),创建一个DataFrame对象df.

    import datetime
    newsTotal =[{'title': '搭建校政协同育人新平台——广州市法律援助处在我校建立工作站', 'dati': datetime.datetime(2018, 4, 13, 16, 19, 2), 'source': '学校综合办', 'click ': 2658, 'newsUrl': 'http://news.gzcc.cn/html/2018/xiaoyuanxinwen_0413/9225.html'},
    {'title': '我校学子在第九届广东省“蓝桥杯”大赛中喜获一等奖', 'dati': datetime.datetime(2018, 4, 13, 10, 23), 'source': '信息技术与工程学院', 'click ': 2031, 'newsUrl': 'http://news.gzcc.cn/html/2018/xiaoyuanxinwen_0413/9214.html'},
    {'title': '我校品牌影响力位居广东民办高校前列', 'dati': datetime.datetime(2018, 4, 12, 17, 27, 50), 'source': '学校综合办', 'click ': 2112, 'newsUrl': 'http://news.gzcc.cn/html/2018/xiaoyuanxinwen_0412/9216.html'},
    {'title': '英国普利茅斯大学代表来访我校', 'dati': datetime.datetime(2018, 4, 12, 14, 1, 24), 'source': '国际学院', 'click ': 2187, 'newsUrl': 'http://news.gzcc.cn/html/2018/xiaoyuanxinwen_0412/9212.html'},
    {'title': '英国赫尔大学代表来访我校', 'dati': datetime.datetime(2018, 4, 11, 16, 30, 4), 'source': '国际学院', 'click ': 3672, 'newsUrl': 'http://news.gzcc.cn/html/2018/xiaoyuanxinwen_0411/9205.html'},
    {'title': '我校学子入选2018年世界大学生空手道锦标赛', 'dati': datetime.datetime(2018, 4, 11, 15, 10, 46), 'source': '公共体育部', 'click ': 6643, 'newsUrl': 'http://news.gzcc.cn/html/2018/xiaoyuanxinwen_0411/9203.html'},
    {'title': '我校参加2018年全国大学生征兵工作视频会议', 'dati': datetime.datetime(2018, 4, 4, 9, 35), 'source': '学生处', 'click ': 27199, 'newsUrl': 'http://news.gzcc.cn/html/2018/xiaoyuanxinwen_0404/9183.html'},
    {'title': '党情国情在我心,理想信仰伴我行——我校举行十九届三中全会和2018年“两会”知识竞赛', 'dati': datetime.datetime(2018, 4, 1, 11, 57), 'source': '马克思主义学院', 'click ': 6799, 'newsUrl': 'http://news.gzcc.cn/html/2018/xiaoyuanxinwen_0401/9167.html'},
    {'title': '校党委书记吕泉荣参加结对子班级主题班会', 'dati': datetime.datetime(2018, 4, 1, 9, 28), 'source': '学生工作处', 'click ': 6065, 'newsUrl': 'http://news.gzcc.cn/html/2018/xiaoyuanxinwen_0401/9163.html'},
    {'title': '我校2018年新增学士学位授予专业评审工作顺利完成', 'dati': datetime.datetime(2018, 3, 30, 17, 10, 12), 'source': '评建与督导办公室', 'click ': 6201, 'newsUrl': 'http://news.gzcc.cn/html/2018/xiaoyuanxinwen_0330/9155.html'},
    {'title': '经济系陆川、白丽老师编著的《电子商务实验》被列为21世纪高等学校电子信息类专业规划教材', 'dati': datetime.datetime(2005, 7, 10, 0, 0), 'source': 'none', 'click ': 1157, 'newsUrl': 'http://news.gzcc.cn/html/2005/xiaoyuanxinwen_0710/2.html'},
    {'title': '我院2005年网页制作比赛圆满结束', 'dati': datetime.datetime(2005, 7, 10, 0, 0), 'source': 'none', 'click ': 1080, 'newsUrl': 'http://news.gzcc.cn/html/2005/xiaoyuanxinwen_0710/3.html'},
    {'title': '我院首届教学工作会议胜利召开', 'dati': datetime.datetime(2005, 7, 10, 0, 0), 'source': 'none', 'click ': 1100, 'newsUrl': 'http://news.gzcc.cn/html/2005/xiaoyuanxinwen_0710/4.html'}]
      
      
    import pandas
    df = pandas.DataFrame(newsTotal)
    

      

    4. 通过df将提取的数据保存到csv或excel 文件。

    df.to_excel('gzccnews.xlsx')
    

      

    5. 用pandas提供的函数和方法进行数据分析:

    • 提取包含点击次数、标题、来源的前6行数据
    • 提取‘学校综合办’发布的,‘点击次数’超过3000的新闻。
    • 提取'国际学院'和'学生工作处'发布的新闻。
    • 进取2018年3月的新闻
    print(df.head(6))
    print(df[(df['click ']>3000)&(df['source']== '学校综合办')])
    #print(df[(df['source']== '国际学院')|(df['source']== '学生工作处')])
    sou = [ '国际学院','学生工作处']
    print(df[df['source'].isin(sou)])
    df1=df.set_index('dati')
    print(df1['2018-03'])
    

      

    6. 保存到sqlite3数据库

    import sqlite3
    with sqlite3.connect('gzccnewsdb.sqlite') as db:
        df.to_sql('gzccnews',con=db,if_exists='replace')
    

      

    7. 从sqlite3读数据

    with sqlite3.connect('gzccnewsdb.sqlite') as db:
        df2 = pandas.read_sql_query('SELECT * FROM gzccnews',con=db)
    print(df2)
    

      

    8. df保存到mysql数据库

    安装SQLALchemy

    pip install SQLALchemy
    

      

    安装PyMySQL

    pip install PyMySQL
    

      

    MySQL里创建数据库:create database gzccnews charset utf8;

    import pymysql
    from sqlalchemy import create_engine
    conn=create_engine('mysql+pymysql://root:@localhost://3306/gzcc?charset=utf8')
    pandas.io.sql.to_sql(df,'gzccnews',con=conn,if_exists='replace')
    

      

    MySQL里查看已保存了数据。(通过MySQL Client或Navicate。)

    select * from news
    

      

  • 相关阅读:
    每日一题 为了工作 2020 0412 第四十一题
    每日一题 为了工作 2020 04011 第四十题
    每日一题 为了工作 2020 0410 第三十九题
    每日一题 为了工作 2020 0409 第三十八题
    每日一题 为了工作 2020 0408 第三十七题
    每日一题 为了工作 2020 0407 第三十六题
    每日一题 为了工作 2020 0406 第三十五题
    每日一题 为了工作 2020 0405 第三十四题
    学习总结(二十四)
    学习总结(二十三)
  • 原文地址:https://www.cnblogs.com/hkvbm/p/8877662.html
Copyright © 2011-2022 走看看