1. 程式人生 > >flask搭建及爬蟲資料展示

flask搭建及爬蟲資料展示

  本文主要介紹的是基於 [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:[email protected]: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

歡迎留言討論、學習!