flask搭建及爬虫数据展示

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cjqh_hao/article/details/83239157

  本文主要介绍的是基于 [Scrapy爬虫数据存数据库],数据已经入库,现在利用flask框架显示到页面上,代码仓库为 [martian-scrapy
]。

一、环境搭建

python 3.6.4
pip install virtualenv
pip install flask

二、flask扩展安装

pip install flask_bootstrap
pip install flask_sqlalchemy
pip install flask_script

三、 数据库、表创建

#创建数据库
create database scrapy;

#创建数据表
 CREATE TABLE `images` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(64) DEFAULT '',
  `img_url` varchar(100) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

四、目录结构组织
scrapy-project

1 image是爬虫目录,此处不多讲,请看之前的文章或留言
2 flask是web目录,存放显示爬虫数据的web文件
  app 是主目录
    main 是视图目录
    templates 是html页面目录
    statics 是css、js等静态文件目录
    config.py 是全局配置文件
    models.py 是orm定义文件
    __init__.py 是web初始化文件
  manage.py 是运行程序

flask directory

#该命令会将xkcd.com网站上的图片title,url存入数据库
scrapy crawl image

#在flask目录下执行,运行web服务器
python manage.py runserver

在浏览器地址栏输入127.0.0.1:5000即可看到页面数据,如下图所示。
crawled data

五、主要代码说明

config.py中DB配置

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:root@localhost:3306/scrapy?charset=utf8'
SQLALCHEMY_TRACK_MODIFICATIONS = True

使用SQLAlchemy定义orm

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

class Image(db.Model):
    __tablename__ = 'images'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(64))
    img_url = db.Column(db.String(100))

    def __repr__(self):
        return '<Images %r>' % self.title

视图路由定义

from . import main
from flask import render_template
from app.models import Image
  
@main.route("/")
def index():
	image_list = Image.query.all()
	return render_template('image.html', images=image_list)

六、可能遇到的问题
1 pymysql.err.InterfaceError: (0, ‘’)解决办法
请参考 https://blog.csdn.net/okm6666/article/details/80618767
2 关闭pyc文件生成
请参考 https://blog.csdn.net/qq_28295425/article/details/82966343
3 ImportError: cannot import name db
请参考 https://stackoverflow.com/questions/48762191/why-do-i-keep-getting-importerror-cannot-import-name-db

欢迎留言讨论、学习!

猜你喜欢

转载自blog.csdn.net/cjqh_hao/article/details/83239157
今日推荐