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
四、目錄結構組織
1 image是爬蟲目錄,此處不多講,請看之前的文章或留言
2 flask是web目錄,存放顯示爬蟲資料的web檔案
app 是主目錄
main 是檢視目錄
templates 是html頁面目錄
statics 是css、js等靜態檔案目錄
config.py 是全域性配置檔案
models.py 是orm定義檔案
__init__.py 是web初始化檔案
manage.py 是執行程式
#該命令會將xkcd.com網站上的圖片title,url存入資料庫 scrapy crawl image #在flask目錄下執行,執行web伺服器 python manage.py runserver
在瀏覽器位址列輸入127.0.0.1:5000即可看到頁面資料,如下圖所示。
五、主要程式碼說明
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
歡迎留言討論、學習!