斷斷續續地在網路和書籍上學習有關 Python 的爬蟲技術,但隨著反爬蟲的技術也是越來越精進,所以想說藉由 「超新手也能用 Python 爬蟲打造貨比千家的比價網站」這門課來看看能否解決相關的疑惑。這篇筆記下如何用 Flask 來架設自己的網站的後續操作細節。
課程相關資訊
[連結]:https://hiskio.com/courses/527/lectures/30381
本篇範圍:Chapter 6 ( 讓資料動起來 – 自架 Flask 商品比價網站 )
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
內容
1. 結合先前的爬蟲 + render_template 套版印出,就可以即時的獲得資訊
2. html 的 template 樣板,若要求快可以使用 Bootstrap 官方所提供的來修改
程式碼
1. 啟動 Server
export FLASK_APP=main.py ( 如果你的檔名是 main.py )
export FLASK_ENV=development
flask run
2. 相關程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# hello.py import crawler4 import pandas as pd from flask import Flask, request, render_template app = Flask(__name__) @app.route("/search") def search(): item = request.args.get('item') if not item: return render_template("none.html", item = '', d = [], ) print(f'item => {item}') d1 = crawler4.pchome(item) df = pd.concat([d1]) return render_template("hello1.html", item = item, d = df.to_dict(orient='records'), ) # crawler4.py import pandas as pd import requests import time import json from bs4 import BeautifulSoup from datetime import datetime def pchome(item): print('=== pchome start ====') url = f'https://ecshweb.pchome.com.tw/search/v3.3/all/results?q={item}&page=1&sort=sale/dc' r = requests.get(url) response = json.loads(r.text) products = [ { 'name': d['name'], 'price': d['price'], 'url': 'https://24h.pchome.com.tw/prod/' + d['Id'] } for d in response['prods'] ] df = pd.DataFrame(products) df['source'] = 'Pchome' df['search_time'] = datetime.today() return df |