美文网首页PythonPython 开发程序员
python 爬取一些数据,存入数据库 并生成简单图表

python 爬取一些数据,存入数据库 并生成简单图表

作者: 2010jing | 来源:发表于2016-06-14 21:36 被阅读5532次

    前言

    爬取豆瓣的 top250 电影榜

    环境

    请自行 安装python 需要的包
    BeautifulSoup
    MySQL-python

    开始
    创建一个py文件 demo3.py

    分析页面结构

    1.png

    导入一些包


    2.png

    定义一个DouBanSpider类以及一些方法

    3.png 4.png 5.png 6.png

    运行

    >>> python demo3.py
    
    7.png

    创建一个用于生成chart的 py文件, showdata1.py

    请自行 安装python 需要的包
    pygal
    MySQL-python
    Flask

    8.png
    9.png 10.png 11.png

    小例子

    #!/usr/bin/python
    #coding=utf-8
    import pygal
    import json
    from urllib2 import urlopen  # python 2 syntax
    # from urllib.request import urlopen # python 3 syntax
    import MySQLdb
    
    
    from flask import Flask
    from pygal.style import DarkSolarizedStyle
    import sys,os
    reload(sys)
    sys.setdefaultencoding('utf8')
    
    app = Flask(__name__)
    
    #----------------------------------------------------------------------
    @app.route('/dbmovies')
    def demoDBMovies():
        try:
            conn = MySQLdb.connect(host='localhost',user='hejing',passwd='hejing',db='books',charset='utf8')
        except Exception, e:
            print e
            sys.exit()
        cursor = conn.cursor()
        sql = "select * from books order by people DESC LIMIT 10"
        cursor.execute(sql)
        alldata = cursor.fetchall()
    
        title = " This is a testing demo"
        line_chart = pygal.HorizontalBar()
        line_chart.title = 'Best Top 10 movies in Douban'
        
        if alldata:
            for rec in alldata:
                #print rec[0], rec[1]
                line_chart.add(rec[0], rec[1])
    
        cursor.close()
        conn.close()
    
        html = """
            <html>
                 <head>
                      <title>%s</title>
                 </head>
                  <body>
                     %s
                 </body>
            </html>
            """ % (title, line_chart.render())
        return html
    #----------------------------------------------------------------------
    if __name__ == '__main__':
        app.run(host='127.0.0.1')
    

    相关文章

      网友评论

      • Gotogo:我用的是python3,修改错误后执行,console显示Running on http://127.0.0.1:5000/,但访问后notfound 为什么啊
        2010jing: @cq_a9ef 我的如截图的地址所示是正常的
        cq_a9ef:请问你的问题解决了吗?
        cq_a9ef:@2010jing 遇到同样问题,加上route依然404
      • 5f2a9858ef66:图5倒数第三行是e:|么,
        2010jing: @若寻久 这个只是驱动,你自己的MySQL的应该知道呀,比如本地的话可以localhost,密码是你安装MySQL时候设置的密码
        a262916dd31f:之前安装时直接conda install mysql-python
        没设置MySQLdb里面的host,user,passwd什么的
        怎么办呀
        2010jing:@5f2a9858ef66 😂😂😂不是,刚刚好截图时,光标在e: 后面
      • 追梦小少年:db=MySQLdb(host='localhost',******),MySQLdb里面的host,user,passwd是通用的吗
        2010jing:@追梦小少年 就是你安装MySQL的账号密码
      • DickH:mark

      本文标题:python 爬取一些数据,存入数据库 并生成简单图表

      本文链接:https://www.haomeiwen.com/subject/vjvudttx.html