日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark机器学习实验

發布時間:2023/12/18 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark机器学习实验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spark機器學習實驗

  • 一、出租車數據分析
    • 1.數據處理
    • 2.數據分析
      • 2.1創建 DataFrame
      • 2.2KMeans 聚類分析
    • 3.百度地圖可視化
      • 3.1申請地圖 key
      • 3.2聚類結果可視化
  • 二、圖書推薦系統
    • 1.Django簡介
      • 1.1.ORM 模型
      • 1.2.Template 模板
      • 1.3 View 視圖
    • 2.Django 項目搭建
      • 2.1 項目創建
      • 2.2 視圖和 URL 配置
      • 2.3 創建應用
      • 2.4 創建模型
      • 2.5 Admin 管理工具
    • 3.推薦引擎設計
      • 3.1導入數據
      • 3.2訓練模型
      • 3.3圖書推薦
    • 4.系統設計與實現
      • 4.1BootStrap介紹與使用
      • 4.2Redis數據庫安裝與使用
      • 4.3視圖與路由設計
      • 4.4界面設計
    • 5.Issue
    • 6.參考文檔
  • 三、轉載申明

一、出租車數據分析

出租車是我們經常乘坐的交通工具,但是經常會遇到打車難的問題,給我們生活和工作帶來諸多不便。本章介紹 Spark 在人們打車出行生活中的應用,該應用把某地區各出租車實時的并帶有地理坐標的 GPS(Global Positioning System)點作為分析對象,使用 Kmeans 聚類方法把出租車軌跡點按簇分類,通過該分類方法找到出租車出現密集的地方,并用地圖的方式進行可視化展示,為人們的出行提供新的思路。

本章主要內容如下。
(1)準備數據并對數據特點進行分析。
(2)從文本文件創建 Spark DataFrame。
(3)使用 Spark 的機器學習庫 Kmeans 進行聚類。
(4)使用百度地圖對聚類的結果進行可視化。

1.數據處理

一般情況下,在進行分析之前需要對數據的分布、狀態等有一個整體的了解,從而確定數據使用哪種方法進行分析,進而對數據進行預處理。本章使用文本數據,打開數據觀察發現,數據集合中存在缺失項或是 GPS 定位點坐標無效的情況,因此需要對此種情況進行處理。因為出租車點上傳的速率非常快并且密度大,所以可以把其中缺失和無效的數據進行刪除,對數據分析不會造成較大的影響。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-QuzNjsmS-1623383617088)(images/image-20200519094316427.png)]

其中,tid:出租車編號;lat:緯度;lon:經度;time:時間戳;tid 的值相同表示相同的車在不同的時間所處的位置。

2.數據分析

在上一節整理的數據的基礎上,使用 Spark 從文本創建 DataFrame,并結合 Kmeans 機器學習聚類方法,實現對出租車在空間位置上的聚類。Kmeans 聚類可根據設定的聚類個數找出若干個聚類中心,對于出租車來講就是出租車經常出現位置點坐標。

2.1創建 DataFrame

from pyspark.sql import SparkSession from pyspark import SparkContext from pyspark.ml.linalg import Vectorssc = SparkContext("local[4]", "taxi") taxi_data = sc.textFile("datas/taxi.csv") taxi_rdd = taxi_data.map(lambda line: line.split(','))# 創建矢量 RDD,矢量的兩個參數分別為緯度和經度。下面的聚類函數需要 RDD 進行聚類。 taxi_row = taxi_rdd.map(lambda x: (Vectors.dense(x[1], x[2]),)) #顯示數據的前五行 print(taxi_row.collect()[:5]) sqlsc = SparkSession.builder.getOrCreate() taxi_df = sqlsc.createDataFrame(taxi_row, ["features"])

2.2KMeans 聚類分析

KMeans 是最常用的聚類算法之一,它將數據點聚類成預定義的簇數。Spark MLlib 實現了包括一個并行化的 k-means++,稱為 kmeans||.。

from pyspark.ml.clustering import KMeans # 引入聚類包kmeans = KMeans(k=3, seed=1) # 聚成 3 類 model = kmeans.fit(taxi_df) # 注意,傳入的 DataFrame 是矢量名稱為 features 的集合 centers = model.clusterCenters() # 產生聚類集合 # 聚類的結果是一系列的點集,這些點集也就是出租車聚集的地區,上述代碼中將數據聚類成 3 類,如圖 9-2 所示。 print(centers)

3.百度地圖可視化

通過 Spark 提供的 Kmeans 聚類方法已經找到了出租車聚集的地圖坐標,但是并不能清楚地看到具體的位置,因此需要通過可視化的方法把數據在地圖上進行展示。百度地圖是國內頂級的地圖服務提供商之一,在提供了基于位置服務的同時也提供了在不同平臺下的對外開放接口,允許用戶自定義地圖并根據相應業務邏輯開發自己的地理信息應用。本節利用百度地圖為開發者提供的第三方開發接口,并對聚類結果進行可視化,讓結果的展現更直接。

3.1申請地圖 key

在使用百度地圖接口之前需要,通過百度地圖的一個認證,用戶要在百度地圖開發平臺中申請一個密鑰 key。讀者可以登錄百度地圖官網,注冊個人賬號,然后選擇申請 key,申請界面如圖:

申請地址:http://lbsyun.baidu.com/

地圖Api控制臺:http://lbsyun.baidu.com/apiconsole/center#/home

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xfsggRFk-1623383617089)(images/image-20200519102035742.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-I6iHEozU-1623383617090)(images/image-20200519102105847.png)]

3.2聚類結果可視化

html文件要在apache或者ngnix服務器中運行,因為百度地圖API中設置了白名單。

<!DOCTYPE html> <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="initial-scale=1.0, user-scalable=no" /><style type="text/css">body,html,#allmap {width: 100%;height: 100%;overflow: hidden;margin: 0;font-family: "微軟雅黑";}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=Dv4X6zApF1yzMQNFoEypNfLX"></script><title>Kmeans 聚類可視化</title> </head><body><div id="allmap"></div> </body></html> <script type="text/javascript">// 百度地圖API功能var map = new BMap.Map("allmap"); // 創建Map實例map.enableScrollWheelZoom(); // 允許滑輪進行放大縮小map.centerAndZoom(new BMap.Point(104.01741982, 30.67598985), 13);// 初始位置與范圍map.addControl(new BMap.NavigationControl());// 添加平移縮放控件map.addControl(new BMap.ScaleControl());// 添加比例尺控件var myP1 = new BMap.Point(104.01741982, 30.67598985); // 聲明點對象var myP2 = new BMap.Point(103.65063611, 30.89504347);var myP3 = new BMap.Point(104.07063581, 30.64562312);map.clearOverlays(); // 清空地圖中的對象var marker1 = new BMap.Marker(myP1); // 定義點樣式,默認為紅色水滴形狀var marker2 = new BMap.Marker(myP2);var marker3 = new BMap.Marker(myP3);map.addOverlay(marker1); // 添加點到地圖map.addOverlay(marker2);map.addOverlay(marker3); </script>

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Lj3ygxcX-1623383617091)(images/image-20200519105430246.png)]

地圖

map.addOverlay(marker2);map.addOverlay(marker3); </script>

[外鏈圖片轉存中…(img-Lj3ygxcX-1623383617091)]

二、圖書推薦系統

注意:在使用源代碼請把所有<% %>請替換為[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oxpYEXA0-1623383822799)(images/image-20200529210559026.png)],為jekyll編譯的問題不能編譯通過生成Github Page.

1.Django簡介

參照Django菜鳥教程:https://www.runoob.com/django/django-tutorial.html

pip install django

1.1.ORM 模型

對象關系映射 ORM(Object Relational Mapping)是一種在面向對象編程語言里實現不同類型系統數據之間轉換的程序技術。

class user(models.Model):#name 字段 max_length 為字段長度, default 為默認值name=model.CharFiled(max_length=50 , default=‘‘)email=model.EmailField()password=model.CharField(max_length=8 , default=‘‘)

1.2.Template 模板

Django 的模板引擎為定義應用程序面向用戶的層提供了一種強大的迷你語言,使應用程序和前端邏輯分離。模板由 HTML 和模板語法關鍵詞組成,并不需要用到 Python 的知識。

Django 模板采用前端模塊化的思路,可以將模塊的前端和后端進行封裝,用繼承和包含的方法實現模塊的重用。HTML 之間可以通過 extends 關鍵字和 block 關鍵字進行相互嵌套。

1.base.html

<!DOCTYPE html> <head> <meta charset="UTF-8"> <title>demo</title> </head> <body> <!-- 頭部導航區域 --> <% block top %> <% endblock %> <!-- 中部內容區域 --> <% block content %> <% endblock %> <!-- 底部區域 --> <% block bottom %> <% endblock %> </body> </html>

2.top.html

<% extends 'base.html' %> <% block top %> <div><h1> 此處為頂部導航界面 </h1></div> <% endblock %>

3.content.html

<% extends 'base.html' %> <% block content %> <div><h1> 此處為中部內容界面 </h1></div> <% endblock %>

4.bottom.html

<% extends 'base.html' %> <% block bottom %> <div><h1> 此處為底部內容界面 </h1></div> <% endblock %>

接下來我們需要向Django說明模板文件的路徑,修改settings.py,修改 TEMPLATES 中的 DIRS 為**[BASE_DIR+"/templates",]**,如:

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [BASE_DIR + "/templates", ],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},}, ]

1.3 View 視圖

Django 是一種基于 MVT(model,view,template)模型的 Web 開發框架。前端請求的后臺響應是通過 view.py 文件中對應的處理函數進行接收請求進行處理。示例代碼如下所示。

def index(request):book_list= book.objects.all()usr=request.session.get('user'None) # 獲取當前登錄用戶名稱userid=request.session.get('userid'None) # 獲取當前登錄用戶的唯一標識 idreturn render(request , 'home/index.html'locals()) # 渲染主頁并向模板傳遞數據

2.Django 項目搭建

2.1 項目創建

django-admin.py startproject testdjango # startproject :創建項目 film :項目名稱

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-aqMWbrdi-1623383682886)(images/image-20200526185338773.png)]

  • testdjango: 項目的容器。
  • manage.py: 一個實用的命令行工具,可讓你以各種方式與該 Django 項目進行交互。
  • testdjango/init.py: 一個空文件,告訴 Python 該目錄是一個 Python 包。
  • testdjango/asgi.py: 一個 ASGI 兼容的 Web 服務器的入口,以便運行你的項目。
  • testdjango/settings.py: 該 Django 項目的設置/配置。
  • testdjango/urls.py: 該 Django 項目的 URL 聲明; 一份由 Django 驅動的網站"目錄"。
  • testdjango/wsgi.py: 一個 WSGI 兼容的 Web 服務器的入口,以便運行你的項目。
python manage.py runserver 0.0.0.0:8000

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-y02ZmFB6-1623383682887)(images/225A52EA-25EF-4BF1-AA5A-B91490CBF26D.jpg)]

2.2 視圖和 URL 配置

在先前創建的 testdjango目錄下的 testdjango目錄新建一個 views.py 文件,并輸入代碼:

from django.http import HttpResponsedef hello(request):return HttpResponse("Hello world ! ")

接著,綁定 URL 與視圖函數。打開 urls.py 文件,刪除原來代碼,將以下代碼復制粘貼到 urls.py 文件中:

from django.urls import pathfrom . import viewsurlpatterns = [path('hello/', views.hello), ]

2.3 創建應用

Django 規定,如果要使用模型,必須要創建一個 app。我們使用以下命令創建一個 TestModel 的 app:

django-admin.py startapp TestModel

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-lVuTyBlF-1623383682889)(images/image-20200526190940213.png)]

2.4 創建模型

我們修改 TestModel/models.py 文件,代碼如下:

from django.db import models# Create your models here. class user(models.Model):name = models.CharField(max_length=50, default='') # 用戶名email = models.EmailField() # 郵箱地址password = models.CharField(max_length=6, default='admin') # 密碼def __str__(self):return self.nameclass Meta:verbose_name = "用戶管理" # 修改 Admin 后臺 App 名稱verbose_name_plural = "用戶管理"class hits(models.Model):userid = models.IntegerField(default=0)bookid = models.IntegerField(default=0)hitnum = models.IntegerField(default=0)def __str__(self):return str(self.userid)class Meta:verbose_name = "單擊量"verbose_name_plural = "單擊量"class book(models.Model):id = models.CharField(max_length=50, blank=False, verbose_name="ID", default='', primary_key=True)name = models.CharField(max_length=50, blank=False, verbose_name="書名", default='')price = models.CharField(max_length=50, blank=False, verbose_name="價格", default='')cover = models.ImageField(verbose_name="封面", upload_to='upload', default='img/default.png')introduction = models.TextField(verbose_name="介紹", blank=True, default='')url = models.URLField(verbose_name='URL', blank=True, default='')publish = models.CharField(verbose_name=' 出版社 ', max_length=50, default='', blank=True)rating = models.CharField(verbose_name=' 評分 ', max_length=5, default='0')def __str__(self):return self.nameclass Meta:verbose_name = " 圖書管理 "verbose_name_plural = " 圖書管理 "

接下來在 settings.py 中找到INSTALLED_APPS這一項,如下:

INSTALLED_APPS = ('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','TestModel', # 添加此項 )

在命令行中運行:

$ python manage.py migrate # 創建表結構$ python manage.py makemigrations TestModel # 讓 Django 知道我們在我們的模型有一些變更 $ python manage.py migrate TestModel # 創建表結構

2.5 Admin 管理工具

Django 提供了基于 web 的管理工具。

Django 自動管理工具是 django.contrib 的一部分。你可以在項目的 settings.py 中的 INSTALLED_APPS 看到它:

INSTALLED_APPS = ('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles', )

通常我們在生成項目時會在 urls.py 中自動設置好,我們只需去掉注釋即可。

from django.contrib import admin from django.urls import pathurlpatterns = [path('admin/', admin.site.urls), ]

你可以通過命令 python manage.py createsuperuser 來創建超級用戶,如下所示:

# python manage.py createsuperuser

啟動開發服務器,然后在瀏覽器中訪問 http://127.0.0.1:8000/admin/,得到如下界面:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-lH4VaHkr-1623383682890)(images/admin1.png)]

之后輸入用戶名密碼登錄,界面如下:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ChjvPt9Z-1623383682891)(images/A995340B-8F8C-4777-9B79-846B6A34508A.jpg)]

3.推薦引擎設計

3.1導入數據

本章實驗數據來自 GitHub 共享者 moverzp 提供的 GoodBooks 數據集,讀者可以在 GitHub中搜索 moverzp 即可找到該貢獻者的倉庫。 該數據集抓取自豆瓣圖書網站,一共有 5 萬多條,主要包含序號、書名、評分、價格、出版社、爬取鏈接的地址,數據格式如圖:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MY1dN0ZY-1623383682892)(images/image-20200527171230075.png)]

為了在網頁前端界面上進行展示,并對圖書信息進行查看,需要先將圖書信息導入到數據庫中。該實驗主要使用的 Django 自動生成的 SQLite 數據庫進行數據存儲,通過 Python 腳本把 csv格式文件導入到數據庫中。其主要思路是通過在前端單擊瀏覽按鈕選擇圖書表格上傳到后臺,后臺接收到 csv 文件后進行解析,通過 Python 代碼打開文件并逐條將數據寫入到數據庫中,核心代碼如下。

# 上傳圖書數據到服務器端并入庫 def handle_upload_file(name, file):path = os.path.join(settings.BASE_DIR, 'uploads') # 服務器上傳地址fileName = path + '/' + name # 文件名with open(fileName, 'wb') as destination: # 接收數據并保存到服務器端for chunk in file.chunks():destination.write(chunk)insertToSQL(fileName) # 將數據插入到數據庫中def insertToSQL(fileName):txtfile = open(fileName, 'r', encoding='UTF-8')for line in txtfile.readlines(): # 逐行讀取數據try:bookinfo = line.split(',') # 數據按照逗號切分獲取各個字段id = bookinfo[0].decode().encode('utf-8') # 圖書編號name = bookinfo[1].decode().encode('utf-8') # 圖書名稱rating = bookinfo[2].decode().encode('utf-8') # 圖書評分得分price = bookinfo[3].decode().encode('utf-8') # 圖書價格publish = bookinfo[4].decode().encode('utf-8') # 出版社url = bookinfo[5].decode().encode('utf-8') # 豆瓣鏈接try:# 創建圖書對象bk_entry = book(name=name, price=price, url=url, publish=publish, rating=rating)bk_entry.save() # 插入數據到數據庫except:print('save error' + id)except:print('read error ' + id)def importBookData(request):if request.method == 'POST':file = request.FILES.get('file', None) # 獲取上傳的文件信息if not file:return HttpResponse('None File uploads !')else:name = file.namehandle_upload_file(name, file)return HttpResponse('success')return render(request, 'upload.html')

3.2訓練模型

因為用戶在訪問圖書網站的時候不一定會對圖書進行評分,所以不根據用戶評分來進行訓練模型,而根據用戶的瀏覽記錄進行相似性推薦。在項目的后臺業務邏輯中會收集用戶的單擊事件,記錄下用戶 id、圖書 id 以及單擊的次數等信息,數據格式如表:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pJWBnfPQ-1623383682893)(images/image-20200527194253126.png)]

因為不根據用戶評分進行訓練,所以在訓練時候采用隱式評分模型,核心代碼如下:

from pyspark import SparkContext from pyspark.sql import SparkSession, Row from pyspark.mllib.recommendation import ALS import os import shutilsc = SparkContext() # 獲取 Spark 上下文 txt = sc.textFile('datas/hit.txt') # 讀取本地用戶瀏覽記錄文件 ratingsRDD = txt.flatMap(lambda x: x.split()).map(lambda x: x.split(',')) # 用戶記錄轉換為 RDD sqlContext = SparkSession.builder.getOrCreate() # 創建 sqlContextuser_row = ratingsRDD.map(lambda x: Row( # 將 RDD 轉換成行數據userid=int(x[0]), bookid=int(x[1]), hitnum=int(x[2]) )) user_df = sqlContext.createDataFrame(user_row) user_df.registerTempTable('test') # 登錄臨時表 datatable = sqlContext.sql("select userid, bookid, sum(hitnum) as hitnum from test group by userid , bookid") # 統計用戶單擊過得圖書次數 bookrdd = datatable.rdd.map(lambda x: (x.userid, x.bookid, x.hitnum)) model = ALS.trainImplicit(bookrdd, 10, 10, 0.01) # 訓練模型if os.path.exists('recommendModel'): # 判斷是否存在模型文件夾shutil.rmtree('recommendModel') # 遞歸刪除文件夾 model.save(sc, 'recommendModel') # 保存模型到本地

3.3圖書推薦

模型訓練完畢后,可以通過 MatrixFactorizationModel 類的 load 方法加載模型,該方法有兩個參數,第一個參數 spark 初始化上下文,第二個參數為用戶的編號,可以通過 recommendProducts函數對用戶進行圖書推薦,該函數有兩個參數,第一個參數為用戶編號,第二個編號為推薦的圖書數量,可以通過前端請求靈活設定推薦的數目。對用戶推薦的結果存到 Redis 內存數據庫中,后臺定時執行該訓練代碼更新數據庫,隨著用戶瀏覽量的增加和系統用戶量的增加,推薦會越來越準確。

import redis from pyspark import SparkContext from pyspark.mllib.recommendation import MatrixFactorizationModelpool = redis.ConnectionPool(host='localhost', port=6379) redis_client = redis.Redis(connection_pool=pool) sc = SparkContext()def getRecommendByUserId(userid, rec_num):try:model = MatrixFactorizationModel.load(sc, 'recommendModel')result = model.recommendProducts(userid, rec_num)temp = ''for r in result:temp += str(r[0]) + ',' + str(r[1]) + ',' + str(r[2]) + '|'redis_client.set(userid, temp)print('load model success ---' + temp)except Exception as e:print('load model failed!' + str(e))sc.stop()getRecommendByUserId(1, 5)

4.系統設計與實現

4.1BootStrap介紹與使用

Bootstrap 是 Twitter 推出的一個用于前端開發的開源工具包。它由 Twitter 的設計師 Mark Otto和 Jacob Thornton 合作開發,是一個 CSS/HTML 框架。

BootStrap中文網:https://www.bootcss.com/

Bootstrap 教程:https://www.runoob.com/bootstrap/bootstrap-tutorial.html

Bootstrap 已經定義了包括按鈕、表單、表格等基本元素在內的多種不同的樣式,不需要開發者再去重新寫 css 樣式去控制外觀。同時 Bootstrap 還提供了柵格布局結構,可以通過簡單的 class設置即可實現響應式布局以適應不同屏幕尺寸的終端。

bootstrap除了包含一個css文件之外還包含有BootStrap.min.js文件,因為js文件是基于JQuery開發的,所以在引用 bootstrap 時候需要先引入 jquery,引用方式如下。

<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

注:使用 cdn 時候,如果網絡連接斷開會導致樣式訪問不到,網站排版錯亂。

4.2Redis數據庫安裝與使用

Redis教程:https://www.runoob.com/redis/redis-tutorial.html

Python redis 使用介紹:https://www.runoob.com/w3cnote/python-redis-intro.html

pip3 install redis

簡單實例:

import redis # 導入redis 模塊r = redis.Redis(host='localhost', port=6379, decode_responses=True) r.set('name', 'runoob') # 設置 name 對應的值 print(r['name']) print(r.get('name')) # 取出鍵 name 對應的值 print(type(r.get('name'))) # 查看類型

連接池:

import redis # 導入redis 模塊pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) r.set('name', 'runoob') # 設置 name 對應的值 print(r.get('name')) # 取出鍵 name 對應的值

4.3視圖與路由設計

視圖views.py需要應用的包:

from django.shortcuts import render from django.http import HttpResponse, HttpResponseRedirect import osfrom testdjango import settings from .models import * from utils import tools import redis

(1)創建用戶登錄視圖

def login(request):if request.method == 'POST': # 相應前臺的 POST 事件name = request.POST.get('name') # 接收前臺傳遞的用戶名password = request.POST.get('password') # 接收前臺傳遞的密碼userEntry = user.objects.filter(name=name, password=password) # 查詢數據庫if userEntry.exists(): # 判斷是否存在用戶request.session['user'] = name # 用戶名寫入到 session 會話request.session['userid'] = userEntry[0].idreturn HttpResponseRedirect('/')return render(request, 'login.html')

(2)創建用戶注冊視圖,核心代碼如下

def register(request):if request.method == 'POST':name = request.POST.get('name')password = request.POST.get('password')userEntry = user(name=name, password=password)userEntry.save()return HttpResponseRedirect('/login/')return render(request, 'register.html', locals())

(3)創建用戶單擊視圖,核心代碼如下

def getBookInfo(request):id = request.GET.get('id')bk = book.objects.get(id=id)# 設置單擊量username = request.session.get('user', None)currentuser = user.objects.get(name=username)try:hit = hits.objects.get(userid=currentuser.id, bookid=id)hit.hitnum += 1hit.save()except:hit = hits()hit.bookid = idhit.hitnum = 1hit.userid = currentuser.idhit.save()data = str(currentuser.id) + ',' + str(id) + ',' + str(1)tools.writeToLocal('datas/hit.txt', data)return render(request, 'detail.html', locals())

(4)創建主頁,核心代碼如下

def index(request):book_list = book.objects.all()usr = request.session.get('user', None)userid = request.session.get('userid', None)return render(request, 'index.html', locals())

(5)創建推薦視圖,核心代碼如下

pool = redis.ConnectionPool(host='localhost', port=6379) redis_client = redis.Redis(connection_pool=pool)def getRecommendBook(request):userid = request.session.get('userid', None)recommendbook = redis_client.get(int(userid))booklist = str(recommendbook).split('|')bookset = []for bk in booklist[:-1]:bookid = bk.split(',')[1]bk_entry = book.objects.get(id=bookid)bookset.append(bk_entry)return render(request, 'recommend.html', locals())

(6)路由設計,核心代碼如下

from django.contrib import admin from django.urls import path from TestModel import viewsurlpatterns = [path('admin/', admin.site.urls),path('hello/', views.hello),path('/', views.index),path('importBookData/', views.importBookData),path('login/', views.login),path('register/', views.register),path('getBookInfo/', views.getBookInfo),path('getRecommendBook/', views.getRecommendBook), ]

(7)在項目的根路徑下新建utils包,并新建tools.py,內容如下:

def writeToLocal(filepath, str):ft = open(filepath, "a+")ft.writelines(str + '\n')ft.close()

4.4界面設計

在項目的路徑下新增templates目錄,分別新建下面的文件:

(1)base.html

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>圖書推薦系統</title><link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"> </head> <body><!-- 中部內容區域 --><div class="container"><div class="row" ><div class="col-md-6"><% block content %><% endblock %></div></div></div><script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script><script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script></body> </html>

(2)login.html

<% extends 'base.html' %> <% block content %><form action="/login/" method="post"><% csrf_token %><div class="form-group"><label for="name">用戶名</label><input type="text" class="form-control" id="name" name="name" placeholder="請輸入用戶名"></div><div class="form-group"><label for="name">密碼</label><input type="password" class="form-control" id="password" name="password" placeholder="請輸入密碼"></div><button type="submit" class="btn btn-default">登錄</button><a href="/register/" class="btn btn-primary">注冊</a></form> <% endblock %>

(3)register.html

<% extends 'base.html' %> <% block content %><form action="/register/" method="post"><% csrf_token %><div class="form-group"><label for="name">用戶名</label><input type="text" class="form-control" id="name" name="name" placeholder="請輸入用戶名"></div><div class="form-group"><label for="password">密碼</label><input type="password" class="form-control" id="password" name="password" placeholder="請輸入密碼"></div><button type="submit" class="btn btn-default">注冊</button></form> <% endblock %>

(4)index.html

<% extends 'base.html' %> <% block content %><table class="table"><caption>圖書列表</caption><thead><tr><th>ID</th><th>名稱</th><th>價格</th></tr></thead><tbody><% for book in book_list %><tr><td><a href="/getBookInfo/?id={{ book.id }}">{{ book.id }}</a></td><td>{{ book.name }}</td><td>{{ book.price }}</td></tr><% endfor %></tbody></table><a href="/getRecommendBook/" class="btn btn-primary">我的推薦列表</a> <% endblock %>

(5)detail.html

<% extends 'base.html' %> <% block content %><form><div class="form-group"><label for="name">書名</label><input type="text" class="form-control" id="name" name="name" value="{{ bk.name }}" disabled></div><div class="form-group"><label for="name">出版社</label><input type="text" class="form-control" id="publish" name="publish" value="{{ bk.publish }}" disabled></div><div class="form-group"><label for="name">價格</label><input type="text" class="form-control" id="price" name="price" value="{{ bk.price }}" disabled></div><div class="form-group"><label for="name">評分</label><input type="text" class="form-control" id="name" name="name" value="{{ bk.rating }}" disabled></div><div class="form-group"><label for="name">URL</label><input type="text" class="form-control" id="url" name="url" value="{{ bk.url }}" disabled></div><a href="/" class="btn btn-primary">返回</a></form> <% endblock %>

(6)recommend.html

<% extends 'base.html' %> <% block content %><table class="table"><caption>推薦列表</caption><thead><tr><th>ID</th><th>名稱</th><th>價格</th></tr></thead><tbody><% for book in bookset %><tr><td><a href="/getBookInfo/?id={{ book.id }}">{{ book.id }}</a></td><td>{{ book.name }}</td><td>{{ book.price }}</td></tr><% endfor %></tbody></table><a href="/" class="btn btn-primary">返回</a> <% endblock %>

(7)upload.html

<% extends 'base.html' %> <% block content %><form action="/importBookData/" method="post" enctype="multipart/form-data"><% csrf_token %><label> 請選擇上傳的文件: </label><input class="form-control" type="file" name="file"><button class="btn btn-primary" type="submit"> 上傳 </button></form> <% endblock %>

5.Issue

1.django.template.exceptions.TemplateDoesNotExist: upload.html

解決方案:

  • 在項目的目錄下面新增templates目錄
  • 在settings.py的TEMPLATES中修改DIRS設置,添加模板路徑

2.RuntimeError: You called this URL via POST, but the URL doesn’t end in a slash and you have APPEND_SLASH set

解決方案:在settings.py中設置APPEND_SLASH = False

3.Forbidden (CSRF token missing or incorrect.)

解決方案:https://blog.csdn.net/weixin_42694291/article/details/86165884

確認settings.py中MIDDLEWARE的有:django.middleware.csrf.CsrfViewMiddleware

html中的form添加模板標簽<% csrf_token %>

6.參考文檔

  • Django教程 https://www.runoob.com/django/django-tutorial.html
  • 基于Spark ALS算法的個性化推薦:https://www.cnblogs.com/wheng/p/11795268.html
  • Redis教程:https://www.runoob.com/redis/redis-tutorial.html
  • BootStrap中文網:https://www.bootcss.com/
  • Bootstrap 教程:https://www.runoob.com/bootstrap/bootstrap-tutorial.html
  • 三、轉載申明

    本文轉自csdn、博客園多個網站匯總所得,屬于個人筆記,不與轉載

    總結

    以上是生活随笔為你收集整理的Spark机器学习实验的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    久久精品4| 天天狠狠 | 九色视频自拍 | 日本在线中文 | 九九九九九九精品 | 久久国产热 | 欧美成人高清 | 一本—道久久a久久精品蜜桃 | 国产成人一区二区精品非洲 | 国产又粗又猛又色 | 亚洲国产综合在线 | 国产精品久久久久久久免费大片 | 国产精品麻豆欧美日韩ww | 日韩在线观看电影 | 亚洲视频一级 | 国语麻豆 | 91丨九色丨蝌蚪丨老版 | 91av看片 | 色99网| 中文字幕二区三区 | 亚洲 av网站 | 中文在线√天堂 | 色噜噜在线观看 | 一级淫片a | 中文字幕a∨在线乱码免费看 | 色丁香久久| 久久视频免费在线观看 | 欧美精品v国产精品v日韩精品 | 久久欧美精品 | 国产精品12 | 欧美精品乱码99久久影院 | 九色在线| 成人免费毛片aaaaaa片 | 天天操天天射天天爱 | 黄色精品一区二区 | 毛片在线网 | 毛片在线播放网址 | 五月天久久激情 | 狠狠色丁香久久婷婷综合丁香 | 久久亚洲成人网 | 成年人网站免费在线观看 | 国产视频91在线 | 国产精品国产三级国产不产一地 | 午夜av一区 | 最近中文字幕大全中文字幕免费 | 日韩av中文字幕在线 | 日韩二区三区在线观看 | 欧美日本中文字幕 | 国产在线精品国自产拍影院 | 中文字幕123区| 国产精品高潮呻吟久久久久 | 久草视频在线播放 | www视频在线播放 | 国产美女精品在线 | 久久人人爽人人爽人人片av免费 | 国产一区观看 | 青青久视频 | 香蕉视频啪啪 | 欧美 国产 视频 | 国产精品原创av片国产免费 | 国产又粗又猛又色又黄网站 | 欧美精品在线一区 | 亚洲乱码久久久 | 免费高清在线观看电视网站 | 91亚洲国产| 久久tv| 日韩精品极品视频 | 精品福利在线观看 | 色综合久久网 | av免费福利 | 日韩av不卡播放 | 91精选在线观看 | 中文字幕在线观看亚洲 | 色婷婷www | 一区二区三区四区精品视频 | 国产色视频一区二区三区qq号 | 一区二区三区免费在线观看视频 | 黄色电影网站在线观看 | 亚洲综合色视频在线观看 | 欧美一区二区精美视频 | 亚洲国内精品视频 | 久久午夜精品影院一区 | 欧美成人性战久久 | 米奇影视7777 | 国产一区二区播放 | 91精品一 | 国产精品99蜜臀久久不卡二区 | 欧美日韩二三区 | 亚洲无吗av | 天天色天天干天天 | 99热在线免费观看 | 日本中文字幕久久 | 伊人色综合久久天天 | 亚洲精品国产精品国自产观看 | 国产精品视频99 | 亚洲少妇自拍 | 午夜电影av | 亚洲综合干 | 97在线资源| 美女视频黄频大全免费 | 麻豆一精品传二传媒短视频 | 91夜夜夜 | 六月丁香在线视频 | 免费国产亚洲视频 | 天天射射天天 | 亚洲jizzjizz日本少妇 | 在线免费中文字幕 | 欧美激情视频在线观看免费 | 在线观看视频免费大全 | 国产精品久久久久久久久搜平片 | 天天干 天天摸 天天操 | 日韩精品在线视频免费观看 | 国产亚洲aⅴaaaaaa毛片 | 免费看一及片 | 成年人免费看的视频 | 人人草人 | 国产成人亚洲精品自产在线 | www免费看片com | 久久国产精品久久w女人spa | 亚洲国产成人久久 | 久久国产精品第一页 | 九七在线视频 | 久久一视频 | 五月天激情在线 | 日本精油按摩3 | www色婷婷com | 99在线播放 | 天堂久久电影网 | www操操操 | 日韩在线视频精品 | 九色精品免费永久在线 | 国产精品久久久久久久久久久杏吧 | 国产亚洲精品xxoo | 亚洲精品欧美视频 | 色夜视频| 国产成人免费高清 | 91九色蝌蚪视频网站 | 中文字幕欧美日韩va免费视频 | 一区二区三区四区精品 | 特黄特黄的视频 | 成人久久毛片 | 日韩欧美一区二区在线观看 | 久青草国产在线 | 草草草影院| 久久不卡国产精品一区二区 | av综合av| 久久久久国产一区二区三区四区 | 最近最新mv字幕免费观看 | 91大神精品视频 | 国产亚洲精品中文字幕 | 国产精品毛片久久蜜 | 女人18精品一区二区三区 | 国产精品 美女 | 麻豆国产精品永久免费视频 | 热久久视久久精品18亚洲精品 | 亚洲综合色av | 日本爽妇网 | 91av在线免费播放 | 夜夜夜影院 | 成人三级视频 | 国产精品破处视频 | 91传媒视频在线观看 | 九七在线视频 | 中文字幕一区二区三区四区在线视频 | 日韩一级成人av | 粉嫩av一区二区三区免费 | 国产无套精品久久久久久 | 韩国视频一区二区三区 | 精品在线免费视频 | 久久av免费观看 | 人人看看人人 | 美女视频久久 | 亚洲妇女av | 亚洲视频免费在线观看 | 日韩欧美成 | 久久综合导航 | 久久草av| 91精品入口 | 91麻豆精品国产 | 日韩美av在线 | 免费美女av | 最新久久免费视频 | 国产一区免费在线观看 | 亚洲国产精品成人va在线观看 | 99热精品国产 | 天天色天天干天天色 | 亚洲人成网站精品片在线观看 | 91麻豆国产福利在线观看 | 国产在线精品观看 | 操操日| 日p视频 | 97精品伊人 | 亚洲91中文字幕无线码三区 | 九九九九九九精品任你躁 | 亚洲丝袜一区 | 久久久久这里只有精品 | av线上看| 日韩在线视频精品 | 一区二区三区免费在线观看视频 | 黄p网站在线观看 | 亚洲精品99久久久久久 | 91.dizhi永久地址最新 | 精品亚洲一区二区三区 | 日韩精品首页 | 亚洲伊人天堂 | 国产精品免费视频一区二区 | 福利一区二区三区四区 | 在线免费色 | 精品国产乱码久久久久 | 91av视频免费观看 | 一 级 黄 色 片免费看的 | 特级黄色片免费看 | 亚洲色图色 | 亚洲午夜久久久久 | 国产色妞影院wwwxxx | av高清一区二区三区 | 久久久精品日本 | 日韩电影久久 | 成年人免费在线观看 | 夜夜躁日日躁 | 91大神在线观看视频 | 狠狠狠色丁香综合久久天下网 | 欧美午夜剧场 | 婷婷丁香色 | 国产色婷婷| 国产在线不卡一区 | 在线观看亚洲精品视频 | 免费日韩三级 | 久草久草视频 | 久久99久国产精品黄毛片入口 | 一级黄色在线免费观看 | 久久精品资源 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 国产日韩精品一区二区 | 午夜av电影 | 色婷婷激情电影 | 亚洲欧美乱综合图片区小说区 | 亚洲激情av | 国产精品99久久久久久有的能看 | 国产成人精品网站 | 欧美成人影音 | 一本色道久久综合亚洲二区三区 | 国产精品18久久久久vr手机版特色 | 久久精品国产免费看久久精品 | 国产97在线播放 | 国产精品一区二区久久精品爱涩 | 久久综合久久伊人 | 久久国内免费视频 | 国产精品嫩草在线 | 99热精品国产一区二区在线观看 | 久久久久婷| 美女久久精品 | 国产伦精品一区二区三区… | 久久1电影院| 久久综合久久综合九色 | 国内精品久久久久影院一蜜桃 | 午夜在线观看一区 | 五月激情站 | av一级在线观看 | 黄色av一区二区 | 色综合网 | 在线精品视频在线观看高清 | 日韩精品最新在线观看 | 97综合视频 | 欧美成人理伦片 | 99久久精品久久亚洲精品 | 国产精品久久久久久久久久久久午夜片 | 91精品国产92久久久久 | 青春草免费在线视频 | 91精品免费| 久久久精品国产免费观看同学 | 欧美一级淫片videoshd | 久久久免费电影 | 美女福利视频一区二区 | 91视频 - v11av | 天天天干夜夜夜操 | 国产一区二区成人 | 在线免费观看视频a | 精品免费在线视频 | 欧美日韩在线观看一区二区三区 | 成人久久网 | 91麻豆产精品久久久久久 | 国产a国产a国产a | 狠狠色狠狠色 | 免费观看全黄做爰大片国产 | 精品国产a | 一区在线观看 | 久草热久草视频 | 精品在线免费视频 | 成人精品国产 | 波多野结衣在线视频一区 | 久久精品伊人 | 午夜精品久久久久久久99热影院 | 久久久久免费精品国产 | 日韩精品在线观看视频 | 国产99精品在线观看 | www.国产视频 | 国产一区二区免费看 | 超碰97人人射妻 | 国产 一区二区三区 在线 | 免费看久久 | 最新av在线播放 | 中文字幕在线网址 | 久久一区国产 | 99麻豆视频 | 一级一片免费看 | 午夜精品三区 | 日韩美女一级片 | 色多多在线观看 | 人人澡澡人人 | 免费下载高清毛片 | 国产又粗又猛又色 | 国产亚洲视频中文字幕视频 | 毛片网站在线观看 | 精品久久久久久亚洲综合网站 | 99视频在线播放 | 开心激情五月网 | 免费在线观看av网址 | 99久久久国产精品免费99 | 夜夜爽88888免费视频4848 | 久久久久综合精品福利啪啪 | 激情五月婷婷激情 | 在线观看欧美成人 | 日韩av一区二区三区在线观看 | 美女视频黄的免费的 | 99久热在线精品 | 激情黄色av | 男女拍拍免费视频 | 国产91精品久久久久久 | 久久伦理 | av成人在线播放 | 久久av免费观看 | 久久精品国产精品亚洲精品 | 国产亚洲精品女人久久久久久 | a午夜电影| 国产精品国产三级国产 | 亚洲成 人精品 | 亚洲美女在线一区 | 精品久久久久_ | aaa亚洲精品一二三区 | 91人人视频在线观看 | 91chinesexxx| 91色欧美| 亚洲一二区视频 | 99久久精品国产亚洲 | av电影一区二区三区 | 91精品视频一区 | 久久视频99 | 97电影院在线观看 | 夜夜操网站 | 中文字幕久久精品亚洲乱码 | 亚洲理论片在线观看 | a在线免费 | 欧美资源 | 久久不卡国产精品一区二区 | 三级av黄色| 九九视频免费在线观看 | 99国产精品久久久久久久久久 | 亚洲一级免费电影 | 欧美 日韩 成人 | 视频国产一区二区三区 | 又粗又长又大又爽又黄少妇毛片 | 91看片在线看片 | 99热这里精品| 色999在线| 在线观看免费视频你懂的 | 蜜臀久久99精品久久久无需会员 | 精品一区二区电影 | 91av看片 | 中文一区二区三区在线观看 | 99免费精品 | 久久国产精品99久久久久久进口 | 免费看毛片网站 | 色在线网 | 天天爽网站 | 国产无遮挡猛进猛出免费软件 | 亚洲四虎 | 狠狠色狠狠色合久久伊人 | 欧美福利在线播放 | 国产三级久久久 | 免费 在线 中文 日本 | 超碰免费av| 免费a视频| 2024av| av电影在线播放 | 亚洲精品视频在线 | 97品白浆高清久久久久久 | 国产亚洲在线 | 欧美日韩在线网站 | 欧美大片在线看免费观看 | 精品国产伦一区二区三区免费 | 黄色亚洲精品 | 国产特黄色片 | 国产精品久久久久一区二区国产 | 六月色丁香 | 国产在线色站 | 欧美一级电影 | 天天干,夜夜爽 | 夜夜操网站 | 在线观看完整版免费 | 午夜影院一级 | 一区二区男女 | 欧美久久久久 | 97人人澡人人爽人人模亚洲 | 91免费观看视频网站 | 四虎影院在线观看av | 色wwww| 成人久久 | 综合久久精品 | 日韩激情中文字幕 | 久久狠狠亚洲综合 | 91精品办公室少妇高潮对白 | 欧美日韩中文在线视频 | 日韩亚洲国产精品 | 美女免费视频一区 | 国产精品精品久久久久久 | a成人v | 欧美在线一二 | 国产一区二区三区久久久 | 美女激情影院 | 欧美一区二区三区四区夜夜大片 | 日本三级不卡视频 | 免费看的黄色的网站 | 亚洲一本视频 | 一区二区成人国产精品 | 精品在线一区二区 | 精品久久精品 | 狠狠狠色丁香婷婷综合激情 | 97国产精品亚洲精品 | 免费在线h| 久久国产免费视频 | 一本一本久久a久久 | 午夜精品电影一区二区在线 | 99精品免费网 | 精品国产成人av在线免 | 天天av在线播放 | 最近中文字幕完整视频高清1 | 99视频+国产日韩欧美 | 探花视频在线观看 | 日韩av区 | 成人免费xxxxxx视频 | 99国产在线 | 欧美在线a视频 | 天天操天天射天天舔 | 亚洲1区 在线 | 偷拍区另类综合在线 | 久草在线免费新视频 | 久久99久久精品 | 91麻豆网| av在线中文 | 91在线视频导航 | 日韩免费观看高清 | 色婷婷电影 | 久久综合久久综合九色 | 少妇超碰在线 | 日韩r级电影在线观看 | 国产精品亚州 | 天天做日日做天天爽视频免费 | www夜夜操com| 精品国产三级 | 久久久免费视频播放 | 色综合久久久久久久久五月 | 九九热re| 韩国av免费 | 久久综合偷偷噜噜噜色 | 精品国产一区二区三区久久久 | 国产91精品久久久久久 | 亚洲一区二区三区miaa149 | 亚洲国产精品一区二区久久hs | 国产在线黄色 | 中文字幕在线观看一区 | 免费在线视频一区二区 | 欧美另类交在线观看 | 天天干天天射天天插 | 黄色小说视频在线 | 亚洲黄色免费 | 色com| 九色精品免费永久在线 | 亚洲成av人影片在线观看 | av一区二区三区在线播放 | 国产亚洲精品美女 | 成av在线 | 亚洲 欧美 变态 国产 另类 | 久久不卡免费视频 | 日韩在线电影一区 | 精品女同一区二区三区在线观看 | 免费网站观看www在线观看 | 久久夜色电影 | 91视频com | 91社区国产高清 | 国产亚洲精品电影 | 久久免费av | 97夜夜澡人人爽人人免费 | www.狠狠插.com | 国产一区二区不卡视频 | 久久伊人精品天天 | 精品久久一二三区 | 高清在线一区 | 国产色黄网站 | 日韩av看片 | 九九热免费在线视频 | 福利电影久久 | 五月婷婷久久综合 | 97精品视频在线播放 | 婷婷国产视频 | 性色视频在线 | 亚洲精品乱码久久久久久蜜桃欧美 | 99re6热在线精品视频 | 成人午夜网 | 在线播放日韩 | 精品国内自产拍在线观看视频 | 亚洲人成免费网站 | 久久在线播放 | 亚洲综合色激情五月 | 玖草在线观看 | 97国产电影 | 黄色软件大全网站 | 国产97在线观看 | 国产99中文字幕 | .精品久久久麻豆国产精品 亚洲va欧美 | 久久久国产日韩 | 91麻豆国产 | 欧美性黑人 | 天天艹天天干天天 | 91视频这里只有精品 | 日韩精品免费一区 | 中文字幕日本在线观看 | 欧美久久九九 | 久久你懂的 | 精品视频中文字幕 | 日韩精品一区二区三区电影 | 亚洲日韩精品欧美一区二区 | 日女人免费视频 | 亚洲成人国产 | 精品一区精品二区 | 九九久久影院 | 天天操天天色天天射 | www.天天操 | 国产精品一区二区免费看 | 亚洲精品免费在线观看 | 精品96久久久久久中文字幕无 | 超碰97国产在线 | 国产原创在线观看 | adn—256中文在线观看 | 亚洲精品一区二区久 | 国产在线999 | 国产成人久久av免费高清密臂 | 天天色综合1 | 黄a在线 | 免费特级黄毛片 | 精品视频国产 | 中文字幕视频观看 | 射射射av| 狠狠做深爱婷婷综合一区 | 91亚洲精品久久久 | 成人在线免费小视频 | 亚洲日本一区二区在线 | 免费观看性生交 | 五月天激情综合 | 网站你懂的 | 久久超 | 中文字幕在线免费观看 | 麻豆传媒精品 | 国模一二三区 | 欧美成人一区二区 | 日本高清免费中文字幕 | 97电院网手机版 | 国产a级精品| 五月婷婷综| 国产精品午夜久久久久久99热 | 日韩视频一区二区三区在线播放免费观看 | 国产精品久久久久久久久久三级 | 日韩在线高清免费视频 | 成年人网站免费在线观看 | 超碰激情在线 | 欧美a影视 | 特级毛片网站 | 免费观看一级 | 综合色在线观看 | 国产精品毛片一区二区在线 | 久久电影国产免费久久电影 | 美女网站在线观看 | 久久人人爽视频 | 色在线免费视频 | 成在人线av| av电影在线免费 | 99热亚洲精品 | 国产97在线观看 | 伊人影院av | 欧美在线视频一区二区三区 | 国产精品综合久久久 | 国产精品久久婷婷六月丁香 | 日韩理论在线播放 | av在线电影网站 | 国内成人精品2018免费看 | 波多野结衣视频一区二区三区 | 俺要去色综合狠狠 | 天天看天天操 | 久久精品国产一区 | 91在线免费观看国产 | 日本中文在线 | 色之综合网 | 国产小视频网站 | 少妇搡bbbb搡bbb搡忠贞 | 精品一区二区三区四区在线 | 久久久黄色免费网站 | 婷婷久久一区 | av中文字幕第一页 | 99久久婷婷国产综合亚洲 | 粉嫩av一区二区三区四区 | 欧美日韩国产高清视频 | 欧产日产国产69 | 99免费在线视频观看 | 午夜精品久久久久久久久久久久久久 | 日韩欧美电影 | 在线天堂亚洲 | 在线观看视频你懂的 | 亚洲日本国产精品 | 国产精品视频区 | 亚洲伦理精品 | 亚洲欧美激情精品一区二区 | 91久久国产露脸精品国产闺蜜 | 成人黄色毛片 | 高清久久久久久 | 欧美国产日韩一区 | 久久久久久蜜桃一区二区 | 国产精品网址在线观看 | 亚洲 成人 欧美 | 91插插插免费视频 | 国产精品99久久久久的智能播放 | 国产一级电影免费观看 | 久久99久国产精品黄毛片入口 | 一级黄色a视频 | 国产午夜精品一区 | 五月婷激情 | 夜夜躁狠狠躁 | 日韩av免费一区二区 | 中文字幕在线观看网站 | 黄色在线观看网站 | 欧美性天天 | 在线电影日韩 | 99视频网址| 99久久精品免费看国产免费软件 | 日韩免费高清在线观看 | 欧美精品久久久久久久 | 亚洲精品视频在线免费 | 久久国产精品免费看 | 在线亚洲观看 | 成人av免费在线播放 | 国产一级大片免费看 | 精品久久久久久久久久久院品网 | 国产精品麻豆一区二区三区 | 久久一级片 | 天天操狠狠操网站 | 国产精品一区二区av日韩在线 | 免费的成人av | 91精品在线免费观看 | 色婷av| 97在线观看免费高清完整版在线观看 | 99精品视频免费观看视频 | 日操干 | 99热亚洲精品| 国产一线在线 | 黄色a级片在线观看 | 色黄视频免费观看 | 夜夜夜| 日韩成人精品一区二区三区 | 亚洲国产视频在线 | 日韩精品2区| 亚洲 综合 精品 | 伊人天天 | 97中文字幕| 手机在线小视频 | www.天堂av | 在线视频观看国产 | 国产一区在线播放 | 国产在线播放一区二区 | 黄污在线观看 | 国产黄色片在线 | 国产一区二区久久精品 | 免费观看www小视频的软件 | 午夜精品一区二区三区在线 | 狠狠操狠狠插 | 久久久久久蜜av免费网站 | 久久香蕉一区 | 国产精久久久久久妇女av | 色综合咪咪久久网 | 天天操天天弄 | 精品国偷自产在线 | 手机av永久免费 | av日韩精品| www91在线观看 | 欧美在线你懂的 | 久久人人97超碰精品888 | 在线色视频小说 | 91精品久久久久久综合五月天 | 一级全黄毛片 | 婷婷网五月天 | aⅴ精品av导航 | 久久久精品99| 777奇米四色 | 国产拍在线| 手机成人免费视频 | 中文字幕乱码在线播放 | 久久久久久久久久久久久影院 | 国产精彩在线视频 | 超碰在线9 | 久草在线欧美 | 亚洲精品视频在线 | 国产盗摄精品一区二区 | 成年人国产在线观看 | www.888av| 天天射天天干天天 | 色网站视频 | 亚洲欧美日韩中文在线 | 国产精品白浆视频 | 欧美日韩不卡一区二区 | 在线观看小视频 | 国产精品婷婷 | 日韩高清成人在线 | 91av在线播放| 欧美精品中文 | 久草综合在线观看 | 国内精品久久久久国产 | 久久精品精品 | 久在线观看 | 在线视频免费观看 | 亚洲国产成人在线 | 亚洲播播 | 在线观看av中文字幕 | 国产麻豆果冻传媒在线观看 | 日韩av影视在线 | 97av视频在线观看 | 99福利片| 91在线入口 | 婷婷性综合 | 国产一级久久 | 丁香网五月天 | 久久成人高清视频 | 最新久久久| 欧产日产国产69 | av中文字幕av | 欧美中文字幕久久 | 麻豆一二| 国产精品密入口果冻 | 美女视频黄在线观看 | 国产一区免费 | 草久久av| 中文字幕一区二区三区精华液 | 精品字幕在线 | 在线看片中文字幕 | 国产精品久久网 | 四虎欧美 | 国产一区二区在线播放视频 | 久久久久久久久久久国产精品 | 欧美肥妇free | 狠狠五月天 | 亚洲最新在线 | 精品国产亚洲在线 | 精品久久一区二区三区 | 国产一区影院 | 日本h在线播放 | 国产视频精选 | 久久国产精品视频免费看 | 91精彩视频在线观看 | 日本精品视频在线观看 | 激情视频国产 | 成人a在线观看高清电影 | 永久免费精品视频网站 | 欧美性色xo影院 | 国产精品video爽爽爽爽 | 美女网站色免费 | 日韩丝袜 | 久久综合九色综合欧美狠狠 | 欧美日韩精品久久久 | 手机在线观看国产精品 | 日韩一级成人av | 精品一区二区三区久久久 | 色小说av | 亚洲dvd | 黄网站免费久久 | 亚洲视频一区二区三区在线观看 | 美女网站视频色 | 综合色综合色 | 在线观看精品一区 | 免费观看全黄做爰大片国产 | 久久99精品国产 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 中文字幕2021 | 欧美成年网站 | 国产精品久久久久久久久久白浆 | 黄色三级久久 | 成人一区电影 | 欧美激情精品久久久久 | 久久久不卡影院 | 麻豆视频在线观看免费 | 亚洲成人精品影院 | 欧美日韩精品在线免费观看 | 午夜视频不卡 | 黄色一及电影 | 天天激情天天干 | 免费在线一区二区三区 | 最新高清无码专区 | 色婷婷 亚洲 | 亚洲欧美综合精品久久成人 | 国产精品高清av | 伊人天天操 | 激情丁香综合五月 | 91av片 | 五月天综合色 | 久久久精品二区 | 免费看污污视频的网站 | 中文字幕资源在线观看 | 九色精品免费永久在线 | 日日狠狠 | 国产97在线播放 | av怡红院 | 日韩欧美国产视频 | 99色在线视频 | 天堂在线视频免费观看 | 99久热| 日韩精品一区二区三区中文字幕 | 五月天com | 九色在线 | 免费日韩 精品中文字幕视频在线 | 九九热在线免费观看 | 久久精品久久久精品美女 | 99久久婷婷国产 | 国产精品99久久久久久久久久久久 | 亚洲精品女 | 婷婷丁香花 | 久久久www成人免费毛片麻豆 | 96视频免费在线观看 | 免费看片网页 | 国产亚洲久一区二区 | 亚州国产精品久久久 | 婷婷资源站 | 在线观看免费成人av | 97av在线视频免费播放 | 免费热情视频 | 在线免费观看黄色 | 黄色aaa级片| 国产美女视频免费 | 国产在线观看你懂得 | 久久高视频 | 国产欧美日韩精品一区二区免费 | 爱干视频 | 国产又黄又硬又爽 | 99久热在线精品 | 九九热免费视频在线观看 | 中文字幕免费观看全部电影 | 在线成人国产 | 日日射av| 日韩精品一区二区免费视频 | 97精品国产97久久久久久免费 | 亚洲女在线 | 久久精品国产一区二区三区 | 久久视频免费观看 | 丁香花中文在线免费观看 | 国产丝袜一区二区三区 | 免费三及片| 精品欧美一区二区三区久久久 | 久久中文视频 | 天天操天天舔天天干 | 在线视频一二三 | 欧美日韩一区二区在线 | 久久久久亚洲a | 日韩二区在线 | 欧美日韩在线免费视频 | 免费国产在线观看 | 国产91精品在线观看 | 九草视频在线观看 | 国际精品网 | 91夫妻视频 | 日韩欧美网站 | 黄色av网站在线观看 | 亚洲免费永久精品国产 | 一级黄视频 | 欧美成人999 | 国产亚洲永久域名 | 国产一级免费片 | 808电影免费观看三年 | 国产视频中文字幕在线观看 | 日韩免费中文字幕 | 国产精品视频久久久 | 色网站国产精品 | 99视频播放 | 久久精品国产免费 | 久久午夜电影网 | 免费在线看成人av | 免费av片在线 | 久久高清视频免费 | 精品国产视频一区 | 国产精品女人网站 | 久免费| 精品中文字幕视频 | 精品国产乱码一区二区三区在线 | 亚洲精品高清一区二区三区四区 | 日韩在线视频网址 | 欧美日韩一二三四区 | 日韩三级视频在线看 | 成人av免费| 国产视频二 | 国产精品人人做人人爽人人添 | 亚洲精品中文字幕在线 | 毛片.com| 久草视频免费观 | 99久久精品免费一区 | 欧美网址在线观看 | 国产一区精品在线观看 | 久久精品久久精品久久 | 亚洲成人精品在线观看 | 国产精品成人免费精品自在线观看 | 在线观看av中文字幕 | 在线看国产 | 色.com| 欧美日韩在线免费观看视频 | 天天做日日做天天爽视频免费 | 久久精品小视频 | 五月天色网站 | av大全在线观看 | 国产精品久久 | 亚洲精品国产精品久久99 | 欧美日韩精品在线视频 | 久久99精品久久久久久秒播蜜臀 | 日韩r级电影在线观看 | 日日干夜夜爱 | 精品国产一区二区三区久久影院 | 99久久国产免费,99久久国产免费大片 | 美女在线观看网站 | 久草在线观看资源 | 狠狠操欧美 | 久久婷婷视频 | 女人18片毛片90分钟 | 日日夜夜精品免费观看 | 久久久久久久久网站 | 免费观看完整版无人区 | 国产日韩欧美在线看 | 久久久精品国产一区二区 | 午夜精品久久久久久久99无限制 | 久久久久美女 | 久久精品久久精品久久 | 99久久精品国产系列 | 午夜精品一区二区三区免费 | 久久福利 | 18国产精品福利片久久婷 | 国产黄色片一级三级 | 久久99久国产精品黄毛片入口 | 最新国产精品视频 | 亚洲精品国产拍在线 | 国产做a爱一级久久 | 久久国产精品99久久久久 | 免费日韩视频 | 中文字幕在线观看免费高清电影 | 色视频在线观看免费 | 久久久久伊人 | 又爽又黄又刺激的视频 | 九九热视频在线免费观看 | 激情欧美在线观看 | 成人国产精品久久久久久亚洲 | 免费电影一区二区三区 | av中文在线影视 | 成人免费看片网址 | 亚洲免费av在线 | 免费a v观看 | 成人精品福利 | 又色又爽又黄高潮的免费视频 | 91插插插免费视频 | 天天综合网~永久入口 | 91重口视频 | 国产精品99久久久精品免费观看 | 国产尤物在线 | 狠狠色丁香婷婷 | 亚洲欧美成人 | 国产大片黄色 | 国产精品婷婷 | 91在线精品播放 | 99久久夜色精品国产亚洲 | 在线看黄色av| 国产精品9999久久久久仙踪林 | 天天玩天天干天天操 | 日韩三级视频在线看 | 久久久国产精品人人片99精片欧美一 | 天天操一操 | 日韩av在线看 | 91污污视频在线观看 | 久久精品这里精品 | 成人黄色电影在线 | 久久久一本精品99久久精品 | 欧美精品久久久久久久亚洲调教 | 天天天天天天干 | 91丨九色丨勾搭 | 亚洲成av人片一区二区梦乃 | 国产手机在线播放 | 欧美一二三区在线播放 | 在线观看免费观看在线91 | 成人精品一区二区三区电影免费 | 国产一区视频免费在线观看 |