99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線(xiàn)實(shí)戰(zhàn)洞察。

基于Streamlit的汽車(chē)銷(xiāo)售分析系統(tǒng):從爬蟲(chóng)到可視化的完整大數(shù)據(jù)項(xiàng)目

基于Streamlit的汽車(chē)銷(xiāo)售分析系統(tǒng):從爬蟲(chóng)到可視化的完整大數(shù)據(jù)項(xiàng)目 每年畢業(yè)設(shè)計(jì)選題季總有同學(xué)在“大數(shù)據(jù)分析”這個(gè)方向上猶豫不決。選純算法方向擔(dān)心推公式講不透選Web開(kāi)發(fā)方向又覺(jué)得不夠有技術(shù)含量選爬蟲(chóng)方向又容易做出一個(gè)沒(méi)有任何分析價(jià)值的腳本集合。如果你正好處在這樣的糾結(jié)里基于 Streamlit 構(gòu)建一個(gè)國(guó)內(nèi)汽車(chē)銷(xiāo)售分析系統(tǒng)是一個(gè)值得認(rèn)真考慮的選項(xiàng)。這個(gè)選題最大的優(yōu)勢(shì)在于它把 Python 爬蟲(chóng)、Hadoop 存儲(chǔ)、Spark 數(shù)據(jù)處理、Streamlit 可視化完整串成了一條數(shù)據(jù)鏈路。你不僅能展示“我會(huì)用某個(gè)框架”還能向答辯老師講清楚“數(shù)據(jù)從哪里來(lái)、經(jīng)過(guò)什么處理、最終如何呈現(xiàn)”。這篇文章會(huì)從選題價(jià)值、系統(tǒng)架構(gòu)、核心代碼實(shí)現(xiàn)、驗(yàn)證方式到答辯避坑把這個(gè)畢業(yè)設(shè)計(jì)題目的完整開(kāi)發(fā)思路拆開(kāi)講清楚。1. 這篇文章真正要解決的問(wèn)題很多畢業(yè)生做大數(shù)據(jù)分析項(xiàng)目最常見(jiàn)的翻車(chē)現(xiàn)場(chǎng)是項(xiàng)目演示時(shí)只有幾張?zhí)崆爱?huà)好的圖表老師問(wèn)“數(shù)據(jù)怎么更新的”答不上來(lái)問(wèn)“數(shù)據(jù)處理邏輯在哪里”只能指著一個(gè) SQL 文件說(shuō)“這就是清洗”。這種項(xiàng)目本質(zhì)上只是一個(gè)“靜態(tài)可視化頁(yè)面”談不上大數(shù)據(jù)分析。而基于 Streamlit 的汽車(chē)銷(xiāo)售分析系統(tǒng)核心價(jià)值在于它不是一個(gè)“畫(huà)圖工具”而是一整套完整的數(shù)據(jù)管道。通過(guò)爬蟲(chóng)獲取汽車(chē)銷(xiāo)量相關(guān)數(shù)據(jù)。把原始數(shù)據(jù)寫(xiě)入 Hadoop HDFS 做分布式存儲(chǔ)。用 Spark 對(duì)海量銷(xiāo)售記錄做清洗和聚合統(tǒng)計(jì)。最后通過(guò) Streamlit 提供交互式可視化面板讓用戶(hù)能按品牌、價(jià)格區(qū)間、地區(qū)、時(shí)間等維度自由篩選分析。這個(gè)選題適合以下人群有一定 Python 基礎(chǔ)希望在畢業(yè)設(shè)計(jì)中體現(xiàn)大數(shù)據(jù)技術(shù)棧但不想在研究分布式原理上耗費(fèi)過(guò)多精力的同學(xué)。它不需要你精通 Hadoop 源碼也不需要你開(kāi)發(fā)復(fù)雜的機(jī)器學(xué)習(xí)模型但要求你能把這些開(kāi)源組件搭建起來(lái)、串聯(lián)起來(lái)、把業(yè)務(wù)問(wèn)題跑通。這種“全鏈路”能力恰恰是很多企業(yè)招聘時(shí)看重的。2. 核心技術(shù)棧拆解每個(gè)組件真正負(fù)責(zé)什么項(xiàng)目名字里出現(xiàn)的每個(gè)技術(shù)名詞在實(shí)際系統(tǒng)中都有明確的分工不能只是羅列在簡(jiǎn)歷上。2.1 Python 與爬蟲(chóng)負(fù)責(zé)數(shù)據(jù)采集。汽車(chē)銷(xiāo)量數(shù)據(jù)通常分布在垂直資訊網(wǎng)站、行業(yè)數(shù)據(jù)平臺(tái)或公開(kāi)榜單中。使用 Python 的requests、BeautifulSoup、json等庫(kù)可以定時(shí)從這些渠道抓取品牌、車(chē)型、銷(xiāo)量、價(jià)格區(qū)間等字段。爬蟲(chóng)是系統(tǒng)的數(shù)據(jù)入口也是整個(gè)鏈路里最容易出問(wèn)題的環(huán)節(jié)因?yàn)槟繕?biāo)網(wǎng)頁(yè)結(jié)構(gòu)變化、反爬機(jī)制、數(shù)據(jù)格式不一致都會(huì)導(dǎo)致采集失敗。2.2 Hadoop HDFS負(fù)責(zé)原始數(shù)據(jù)存儲(chǔ)。爬蟲(chóng)抓下來(lái)的數(shù)據(jù)是散亂的 JSON 或 CSV 文本如果直接交給 Spark 分析會(huì)有大量臟數(shù)據(jù)。HDFS 在這里扮演的是“數(shù)據(jù)湖泊”的角色先把原始文件統(tǒng)一上傳到 HDFS 指定目錄再做后續(xù)清洗。在畢業(yè)設(shè)計(jì)環(huán)境中通常使用 Hadoop 偽分布式模式單機(jī)就能模擬真實(shí) HDFS 的文件讀寫(xiě)和副本機(jī)制。2.3 Spark負(fù)責(zé)數(shù)據(jù)清洗、統(tǒng)計(jì)分析和離線(xiàn)計(jì)算。它從 HDFS 讀取數(shù)據(jù)完成去重、缺失值處理、格式統(tǒng)一然后按品牌、地區(qū)、時(shí)間等維度做聚合統(tǒng)計(jì)。相比直接用 Pandas 處理Spark 的優(yōu)勢(shì)在于當(dāng)數(shù)據(jù)量達(dá)到百萬(wàn)級(jí)以上時(shí)它能利用分布式計(jì)算能力同一個(gè)聚合邏輯可以平滑地從單機(jī)擴(kuò)展到集群。這在畢業(yè)設(shè)計(jì)答辯中是一個(gè)非常加分的“工程化設(shè)計(jì)點(diǎn)”。2.4 Streamlit負(fù)責(zé)交互式可視化。Streamlit 是一個(gè) Python 開(kāi)源框架能用純 Python 腳本快速構(gòu)建數(shù)據(jù)應(yīng)用。它的核心特點(diǎn)是你寫(xiě)一個(gè)st.bar_chart刷新頁(yè)面就是一個(gè)圖表控件寫(xiě)一個(gè)st.selectbox就能生成下拉篩選框。不需要掌握 HTML、CSS、JavaScript幾十行代碼就能做一個(gè)可交互的數(shù)據(jù)面板非常適合畢業(yè)設(shè)計(jì)這種需要快速交付演示系統(tǒng)的場(chǎng)景。2.5 各技術(shù)棧的分工對(duì)比組件核心職責(zé)輸入輸出Python 爬蟲(chóng)數(shù)據(jù)采集公開(kāi)網(wǎng)頁(yè)或 API原始 CSV/JSON 文件Hadoop HDFS分布式存儲(chǔ)原始文件HDFS 上的數(shù)據(jù)文件Spark數(shù)據(jù)清洗與聚合HDFS 上的文件統(tǒng)計(jì)結(jié)果表MySQL / SQLite結(jié)果存儲(chǔ)Spark 輸出結(jié)果結(jié)構(gòu)化結(jié)果數(shù)據(jù)Streamlit可視化交互結(jié)果數(shù)據(jù)瀏覽器訪(fǎng)問(wèn)的分析面板3. 系統(tǒng)架構(gòu)與模塊劃分整個(gè)系統(tǒng)的架構(gòu)可以分成五個(gè)層次每一層都有一個(gè)清晰的數(shù)據(jù)入口和出口。數(shù)據(jù)采集層Python 爬蟲(chóng)定時(shí)抓取生成原始數(shù)據(jù)文件 ↓ 數(shù)據(jù)存儲(chǔ)層原始文件上傳 Hadoop HDFS ↓ 數(shù)據(jù)處理層Spark 讀取 HDFS完成清洗和聚合統(tǒng)計(jì) ↓ 結(jié)果存儲(chǔ)層統(tǒng)計(jì)結(jié)果寫(xiě)入 MySQL 或 SQLite ↓ 可視化層Streamlit 讀取結(jié)果庫(kù)生成交互式 Dashboard在畢業(yè)設(shè)計(jì)論文中建議第一張架構(gòu)圖就畫(huà)這個(gè)五層模型。相比只畫(huà)一個(gè)流程圖這個(gè)分層模式能清楚展示你對(duì)系統(tǒng)整體性的把握同時(shí)也是后期寫(xiě)各章分工的骨架。系統(tǒng)內(nèi)部模塊建議按功能拆分幾個(gè)獨(dú)立的 Python 包c(diǎn)rawler/爬蟲(chóng)模塊負(fù)責(zé)數(shù)據(jù)采集和本地落盤(pán)。storage/負(fù)責(zé) HDFS 文件上傳和目錄管理。spark_jobs/Spark 統(tǒng)計(jì)任務(wù)一個(gè)任務(wù)對(duì)應(yīng)一個(gè)分析維度。dashboard/Streamlit 頁(yè)面腳本負(fù)責(zé)可視化查詢(xún)。config/存放數(shù)據(jù)庫(kù)連接、HDFS 地址、爬蟲(chóng)目標(biāo)等配置文件。這樣拆分的好處是答辯時(shí)老師問(wèn)“你這個(gè)系統(tǒng)哪些模塊是獨(dú)立可復(fù)用的”你可以直接回答每一個(gè)包都可以單獨(dú)運(yùn)行、單獨(dú)測(cè)試不是一個(gè)所有代碼堆在同一個(gè) py 文件里的低質(zhì)量項(xiàng)目。4. 環(huán)境準(zhǔn)備與開(kāi)發(fā)環(huán)境搭建在開(kāi)始編碼之前先把環(huán)境準(zhǔn)備好。下面是一套適合畢業(yè)設(shè)計(jì)演示的推薦環(huán)境版本號(hào)請(qǐng)以官方文檔和實(shí)際安裝為準(zhǔn)不要機(jī)械照搬。4.1 Python 環(huán)境建議使用 Python 3.9 到 3.12 之間的穩(wěn)定版本。Streamlit 對(duì) Python 版本有一定要求過(guò)老的 Python 版本可能無(wú)法安裝最新版 Streamlit。使用虛擬環(huán)境管理依賴(lài)避免多個(gè)項(xiàng)目依賴(lài)互相污染。# 創(chuàng)建并激活虛擬環(huán)境 python -m venv venv source venv/bin/activate # Windows 請(qǐng)使用 venv\Scripts\activate # 安裝核心依賴(lài) pip install streamlit pip install pandas pip install plotly pip install pyspark pip install requests pip install beautifulsoup4 pip install pymysql pip install apscheduler如果你需要同時(shí)連接 Hadoop HDFS在純 Python 項(xiàng)目中可以使用hdfs庫(kù)來(lái)調(diào)用 WebHDFS 接口這比自己實(shí)現(xiàn) Hadoop RPC 協(xié)議要簡(jiǎn)單得多。pip install hdfs4.2 Hadoop 環(huán)境畢業(yè)設(shè)計(jì)推薦使用 Hadoop 偽分布式模式。偽分布式是指在單臺(tái)服務(wù)器上以獨(dú)立進(jìn)程模擬 NameNode、DataNode、SecondaryNameNode 等角色既能展示 HDFS 的核心機(jī)制又不需要多臺(tái)物理機(jī)。啟動(dòng)流程# 格式化 NameNode僅第一次啟動(dòng)時(shí)執(zhí)行 hdfs namenode -format # 啟動(dòng) HDFS 服務(wù) start-dfs.sh # 驗(yàn)證是否啟動(dòng)成功 jpsjps命令輸出中如果看到NameNode、DataNode、SecondaryNameNode三個(gè)進(jìn)程說(shuō)明 HDFS 核心節(jié)點(diǎn)已經(jīng)正常啟動(dòng)。創(chuàng)建項(xiàng)目數(shù)據(jù)目錄hdfs dfs -mkdir -p /user/student/car_sales/raw hdfs dfs -mkdir -p /user/student/car_sales/clean4.3 Spark 環(huán)境Spark 建議使用 Local 模式完成開(kāi)發(fā)調(diào)試減少集群資源調(diào)度帶來(lái)的額外復(fù)雜度。在提交任務(wù)時(shí)--master local[*]表示使用本機(jī)所有可用 CPU 核心執(zhí)行任務(wù)這個(gè)參數(shù)對(duì)單機(jī)演示完全夠用。spark-submit \ --master local[*] \ --name CarSalesStatistics \ spark_jobs/sales_statistics.py4.4 數(shù)據(jù)庫(kù)環(huán)境統(tǒng)計(jì)結(jié)果存放于 MySQL 或 SQLite。MySQL 更適合展示工程化能力SQLite 更適合快速演示和打包提交。二選一即可重點(diǎn)在于表結(jié)構(gòu)設(shè)計(jì)清晰。下表是一個(gè)簡(jiǎn)易的汽車(chē)銷(xiāo)量統(tǒng)計(jì)結(jié)果表設(shè)計(jì)字段名類(lèi)型說(shuō)明idINT主鍵自增brandVARCHAR(50)品牌名稱(chēng)modelVARCHAR(100)車(chē)型名稱(chēng)sale_dateVARCHAR(20)銷(xiāo)售日期sales_volumeINT銷(xiāo)量price_rangeVARCHAR(20)價(jià)格區(qū)間regionVARCHAR(20)銷(xiāo)售地區(qū)5. 數(shù)據(jù)采集層用 Python 爬蟲(chóng)獲取汽車(chē)銷(xiāo)量數(shù)據(jù)爬蟲(chóng)是數(shù)據(jù)入口也是最容易被忽略工程質(zhì)量的部分。不少同學(xué)把目標(biāo)網(wǎng)頁(yè)復(fù)制成 HTML 文件然后寫(xiě)一個(gè)字符串解析腳本這種方式在答辯中很難自圓其說(shuō)。更穩(wěn)妥的做法是先確認(rèn)目標(biāo)數(shù)據(jù)源是否允許爬蟲(chóng)訪(fǎng)問(wèn)遵守robots.txt和網(wǎng)站服務(wù)條款在代碼中做好頻率控制和異常處理僅將數(shù)據(jù)用于學(xué)習(xí)和畢業(yè)設(shè)計(jì)研究。下面是一個(gè)簡(jiǎn)化版的采集流程結(jié)構(gòu)上先請(qǐng)求數(shù)據(jù)再解析字段最后保存到本地 CSV 文件。# 文件路徑crawler/car_sales_crawler.py import csv import json import random import time import requests # 演示用模擬接口地址實(shí)際項(xiàng)目需替換為確認(rèn)可合法訪(fǎng)問(wèn)的數(shù)據(jù)源 API_URL https://example-car-data-api.com/api/v1/sales def fetch_sales_page(page: int, page_size: int 100) - list: 拉取一頁(yè)銷(xiāo)售記錄。 實(shí)際采集前必須確認(rèn)目標(biāo)數(shù)據(jù)源的服務(wù)條款與 robots 規(guī)則。 params { page: page, page_size: page_size } headers { User-Agent: ( Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 ) } # 注這里會(huì)進(jìn)行真實(shí)網(wǎng)絡(luò)請(qǐng)求本地不能訪(fǎng)問(wèn)外網(wǎng)時(shí) # 可以用下面的 mock_data() 返回演示數(shù)據(jù)。 resp requests.get(API_URL, paramsparams, headersheaders, timeout10) resp.raise_for_status() data resp.json() # 根據(jù)返回結(jié)構(gòu)解析記錄列表 records data.get(data, {}).get(records, []) return records def mock_data(): 僅用于本地功能演示構(gòu)造符合字段結(jié)構(gòu)的樣本數(shù)據(jù)。 brands [大眾, 豐田, 比亞迪, 本田, 長(zhǎng)安, 吉利] models { 大眾: [朗逸, 速騰, 帕薩特], 豐田: [卡羅拉, 凱美瑞, RAV4榮放], 比亞迪: [秦PLUS, 宋PLUS, 漢], 本田: [思域, 雅閣, CR-V], 長(zhǎng)安: [CS75 PLUS, 逸動(dòng), UNI-V], 吉利: [星越L, 帝豪, 博越L], } price_ranges [8-10萬(wàn), 10-15萬(wàn), 15-20萬(wàn), 20-30萬(wàn)] regions [華東, 華南, 華北, 西南, 東北] records [] for _ in range(20): brand random.choice(brands) model random.choice(models[brand]) records.append({ brand: brand, model: model, sale_date: f2024-{random.randint(1, 12):02d}-01, sales_volume: random.randint(1000, 40000), price_range: random.choice(price_ranges), region: random.choice(regions), }) return records def save_to_csv(records: list, file_path: str) - None: 將記錄列表寫(xiě)入 CSV 文件。 if not records: return fieldnames [brand, model, sale_date, sales_volume, price_range, region] with open(file_path, w, newline, encodingutf-8) as f: writer csv.DictWriter(f, fieldnamesfieldnames) writer.writeheader() writer.writerows(records) def main(): # 在線(xiàn)數(shù)據(jù)源不可用時(shí)切換為 mock_data() 構(gòu)造本地演示數(shù)據(jù) all_records [] for page in range(1, 6): try: records fetch_sales_page(page, page_size100) except Exception as e: print(f請(qǐng)求失敗使用模擬數(shù)據(jù)。錯(cuò)誤信息{e}) records mock_data() all_records.extend(records) # 控制采集頻率避免對(duì)目標(biāo)站點(diǎn)造成壓力 time.sleep(random.uniform(0.5, 1.5)) save_to_csv(all_records, data/raw_sales.csv) print(f采集完成共保存 {len(all_records)} 條記錄) if __name__ __main__: main()這段代碼中有幾個(gè)針對(duì)答辯的設(shè)計(jì)點(diǎn)要提前準(zhǔn)備第一采集必須帶User-Agent并在兩次請(qǐng)求之間隨機(jī)休眠這體現(xiàn)的是對(duì)目標(biāo)站點(diǎn)的禮貌訪(fǎng)問(wèn)也是爬蟲(chóng)的基本素養(yǎng)。第二try...except中切換為模擬數(shù)據(jù)既能保證代碼在離線(xiàn)環(huán)境下可運(yùn)行也能應(yīng)對(duì)真實(shí)接口訪(fǎng)問(wèn)失敗時(shí)系統(tǒng)不崩潰。第三字段名稱(chēng)統(tǒng)一采用英文蛇形命名方便后續(xù) Spark 和 Streamlit 直接讀取避免中文字段名在數(shù)據(jù)管道中引發(fā)編碼問(wèn)題。運(yùn)行方式python crawler/car_sales_crawler.py運(yùn)行完成后在data/目錄下會(huì)生成raw_sales.csv文件包含品牌、車(chē)型、銷(xiāo)量、日期、價(jià)格區(qū)間和地區(qū)字段。6. 數(shù)據(jù)存儲(chǔ)層Hadoop HDFS 上傳與目錄管理爬蟲(chóng)生成的 CSV 文件還在本地下一步需要上傳到 HDFS。這一步在系統(tǒng)里的意義是把“原始數(shù)據(jù)”與“分析數(shù)據(jù)”隔離存放避免后面反復(fù)讀取本地文件產(chǎn)生路徑混亂。HDFS 常用命令# 上傳本地文件到 HDFS hdfs dfs -put data/raw_sales.csv /user/student/car_sales/raw/ # 查看文件是否上傳成功 hdfs dfs -ls /user/student/car_sales/raw/ # 查看文件大小和分塊信息 hdfs dfs -du -h /user/student/car_sales/raw/如果你希望爬蟲(chóng)完成之后自動(dòng)上傳文件可以在 Python 中調(diào)用 WebHDFS 接口。這里給出一個(gè)最小實(shí)現(xiàn)把本地上傳邏輯封裝起來(lái)避免每次手動(dòng)執(zhí)行 HDFS 命令。# 文件路徑storage/hdfs_client.py from hdfs import InsecureClient # HDFS NameNode 地址根據(jù)實(shí)際部署環(huán)境修改 HDFS_HOST http://localhost:9870 HDFS_USER student client InsecureClient(HDFS_HOST, userHDFS_USER) def upload_to_hdfs(local_path: str, hdfs_path: str) - None: 將本地文件上傳到 HDFS 指定路徑。 local_path: data/raw_sales.csv hdfs_path: /user/student/car_sales/raw/raw_sales.csv client.upload(hdfs_path, local_path, overwriteTrue) print(f文件已上傳{local_path} - {hdfs_path}) def list_hdfs_dir(hdfs_dir: str) - list: 列出 HDFS 目錄下的文件信息。 return client.list(hdfs_dir, statusTrue) if __name__ __main__: upload_to_hdfs( data/raw_sales.csv, /user/student/car_sales/raw/raw_sales.csv ) print(list_hdfs_dir(/user/student/car_sales/raw))從教學(xué)角度看HDFS 部分不需要在論文里展開(kāi)講太多底層原理但要能回答三個(gè)問(wèn)題為什么用 HDFS 而不是直接放本地磁盤(pán)實(shí)際數(shù)據(jù)存儲(chǔ)在哪個(gè)節(jié)點(diǎn)文件的副本機(jī)制是什么能回答這三問(wèn)就足以證明你不是只知道命令的工具人。7. 數(shù)據(jù)分析層Spark 清洗與銷(xiāo)量統(tǒng)計(jì)實(shí)現(xiàn)Spark 是整個(gè)系統(tǒng)里最能體現(xiàn)“大數(shù)據(jù)分析”的部分。它承擔(dān)的任務(wù)有兩塊第一把 HDFS 上的原始數(shù)據(jù)讀進(jìn)來(lái)第二按品牌、時(shí)間、價(jià)格區(qū)間、地區(qū)等維度做聚合統(tǒng)計(jì)。下面是一個(gè)典型的統(tǒng)計(jì)任務(wù)腳本示例# 文件路徑spark_jobs/sales_statistics.py from pyspark.sql import SparkSession from pyspark.sql.functions import sum, col, to_date, year, month from pyspark.sql.window import Window from pyspark.sql.functions import row_number # 初始化 SparkSession本地模式運(yùn)行 spark SparkSession.builder \ .appName(CarSalesAnalysis) \ .master(local[*]) \ .config(spark.sql.shuffle.partitions, 4) \ .getOrCreate() # 從 HDFS 讀取原始銷(xiāo)售數(shù)據(jù) sales_df spark.read.csv( hdfs://localhost:9000/user/student/car_sales/raw/, headerTrue, inferSchemaTrue ) # 數(shù)據(jù)清洗去除銷(xiāo)量為空或小于 0 的記錄 clean_df sales_df.filter(col(sales_volume).isNotNull()) \ .filter(col(sales_volume) 0) \ .dropDuplicates([brand, model, sale_date]) # 增加年份和月份兩列便于時(shí)間維度分析 clean_df clean_df.withColumn(sale_date, to_date(col(sale_date), yyyy-MM-dd)) \ .withColumn(year, year(col(sale_date))) \ .withColumn(month, month(col(sale_date))) # 統(tǒng)計(jì)品牌總銷(xiāo)量 brand_sales clean_df.groupBy(brand) \ .agg(sum(sales_volume).alias(total_sales)) \ .orderBy(col(total_sales).desc()) # 統(tǒng)計(jì)價(jià)格區(qū)間銷(xiāo)量分布 price_sales clean_df.groupBy(price_range) \ .agg(sum(sales_volume).alias(total_sales)) \ .orderBy(col(total_sales).desc()) # 統(tǒng)計(jì)大區(qū)銷(xiāo)量排名 region_sales clean_df.groupBy(region) \ .agg(sum(sales_volume).alias(total_sales)) \ .orderBy(col(total_sales).desc()) # 查看結(jié)果方便調(diào)試時(shí)確認(rèn)數(shù)據(jù)是否正確 brand_sales.show(10) price_sales.show(10) region_sales.show(10) # 寫(xiě)入結(jié)果庫(kù)以 CSV 形式落盤(pán) brand_sales.write.mode(overwrite).csv(data/output/brand_sales) price_sales.write.mode(overwrite).csv(data/output/price_sales) region_sales.write.mode(overwrite).csv(data/output/region_sales) spark.stop()這段代碼的關(guān)鍵邏輯在于用dropDuplicates去除同一品牌、車(chē)型、日期下的重復(fù)記錄這是爬蟲(chóng)采集中最常見(jiàn)的臟數(shù)據(jù)問(wèn)題。用to_date把字符串日期轉(zhuǎn)成真正的日期類(lèi)型后續(xù)按年、月聚合才不容易出錯(cuò)。所有聚合結(jié)果都單獨(dú)導(dǎo)出到data/output/目錄方便 Streamlit 層讀取。Spark 是否真的有必要在這個(gè)畢業(yè)設(shè)計(jì)里答案是“有必要”因?yàn)樗x了系統(tǒng)的擴(kuò)展邊界。答辯時(shí)你可以這樣說(shuō)如果數(shù)據(jù)量從今天的幾千條增長(zhǎng)到千萬(wàn)條量級(jí)只需要把master從local[*]改成 YARN 集群的提交方式同一套聚合邏輯可以直接運(yùn)行在分布式環(huán)境。這種回答比任何背誦的八股文都有說(shuō)服力。注意如果從 HDFS 讀取文件時(shí)遇到網(wǎng)絡(luò)不通、權(quán)限不足可以先在本地用 CSV 路徑做開(kāi)發(fā)調(diào)試確認(rèn)邏輯正確后再切換回 HDFS 路徑。項(xiàng)目開(kāi)發(fā)要有“先跑通、再換環(huán)境”的階段拆分意識(shí)。8. 可視化層Streamlit 交互式儀表盤(pán)實(shí)現(xiàn)Streamlit 是這個(gè)項(xiàng)目里開(kāi)發(fā)效率最高的部分。你寫(xiě)一個(gè) Python 腳本保存后刷新頁(yè)面就能看到圖表和篩選器不需要配置任何前端工程。下面是一個(gè)完整的 Streamlit 應(yīng)用框架包含數(shù)據(jù)加載、側(cè)邊欄篩選、指標(biāo)卡片和三個(gè)分析頁(yè)簽。# 文件路徑dashboard/app.py import streamlit as st import pandas as pd import plotly.express as px # 頁(yè)面基礎(chǔ)配置 st.set_page_config( page_title國(guó)內(nèi)汽車(chē)銷(xiāo)售分析系統(tǒng), page_icon:car:, layoutwide ) st.title(國(guó)內(nèi)汽車(chē)銷(xiāo)售分析系統(tǒng)) st.markdown(本系統(tǒng)基于 Python 爬蟲(chóng)、Hadoop HDFS、Spark 與 Streamlit 構(gòu)建數(shù)據(jù)均為教學(xué)演示樣本。) st.cache_data def load_data(): 從 Spark 輸出的結(jié)果目錄加載數(shù)據(jù)。 如果是開(kāi)發(fā)階段也可以直接讀取 data/raw_sales.csv。 brand_df pd.read_csv(data/output/brand_sales/*.csv, headerNone, names[brand, total_sales]) price_df pd.read_csv(data/output/price_sales/*.csv, headerNone, names[price_range, total_sales]) region_df pd.read_csv(data/output/region_sales/*.csv, headerNone, names[region, total_sales]) return brand_df, price_df, region_df brand_df, price_df, region_df load_data() # 側(cè)邊欄篩選 st.sidebar.header(篩選條件) all_brands brand_df[brand].tolist() selected_brand st.sidebar.selectbox(選擇品牌, [全部] all_brands) all_regions region_df[region].tolist() selected_region st.sidebar.multiselect(選擇地區(qū), all_regions, defaultall_regions) # 核心指標(biāo)卡片 total_sales brand_df[total_sales].sum() brand_count brand_df.shape[0] avg_sales brand_df[total_sales].mean() col1, col2, col3 st.columns(3) col1.metric(總銷(xiāo)量, f{total_sales:,}) col2.metric(品牌數(shù)量, brand_count) col3.metric(品牌平均銷(xiāo)量, f{avg_sales:,.0f}) # 圖表區(qū) tab1, tab2, tab3 st.tabs([品牌銷(xiāo)量排行, 價(jià)格區(qū)間分布, 地區(qū)銷(xiāo)量對(duì)比]) with tab1: fig_brand px.bar( brand_df.head(10), xbrand, ytotal_sales, title品牌銷(xiāo)量 Top10, texttotal_sales ) st.plotly_chart(fig_brand, use_container_widthTrue) with tab2: fig_price px.pie( price_df, namesprice_range, valuestotal_sales, title價(jià)格區(qū)間銷(xiāo)量占比 ) st.plotly_chart(fig_price, use_container_widthTrue) with tab3: fig_region px.bar( region_df.loc[region_df[region].isin(selected_region)], xregion, ytotal_sales, title地區(qū)銷(xiāo)量對(duì)比, colorregion ) st.plotly_chart(fig_region, use_container_widthTrue) st.markdown(---) st.caption(數(shù)據(jù)說(shuō)明本頁(yè)面展示的統(tǒng)計(jì)結(jié)果由 Spark 離線(xiàn)計(jì)算生成數(shù)據(jù)文件來(lái)自教學(xué)演示樣本。)8.1 Streamlit 緩存機(jī)制st.cache_data是 Streamlit 中一個(gè)非常實(shí)用的裝飾器。默認(rèn)情況下Streamlit 腳本在每次交互時(shí)都會(huì)重新執(zhí)行如果每次都重新讀 CSV 或數(shù)據(jù)庫(kù)頁(yè)面會(huì)明顯卡頓。加上這個(gè)裝飾器后同樣的參數(shù)只會(huì)加載一次數(shù)據(jù)后續(xù)交互直接走緩存頁(yè)面響應(yīng)更快。答辯演示時(shí)這個(gè)細(xì)節(jié)體現(xiàn)的是你對(duì)數(shù)據(jù)加載性能的敏感度。8.2 多頁(yè)簽設(shè)計(jì)使用st.tabs可以把品牌、價(jià)格、地區(qū)三個(gè)分析視角放在同一個(gè)頁(yè)面里而不是像傳統(tǒng) Flask 項(xiàng)目那樣跳轉(zhuǎn)多個(gè)頁(yè)面。這種設(shè)計(jì)更符合數(shù)據(jù)分析師的日常使用習(xí)慣進(jìn)入系統(tǒng)后在一個(gè)頁(yè)面內(nèi)完成所有維度的探索。8.3 跑通一個(gè)最小可運(yùn)行版本如果 Spark 輸出文件還沒(méi)有生成可以先在load_data()里臨時(shí)改為讀取data/raw_sales.csv用原始數(shù)據(jù)做圖表保證 Streamlit 頁(yè)面先能跑起來(lái)。然后再切換回 Spark 結(jié)果文件形成完整的“數(shù)據(jù)生成到展示”閉環(huán)。9. 系統(tǒng)運(yùn)行效果與答辯演示要點(diǎn)整個(gè)系統(tǒng)開(kāi)發(fā)完成后的運(yùn)行命令分兩步先跑 Spark 統(tǒng)計(jì)任務(wù)再啟動(dòng) Streamlit 應(yīng)用。# 第一步執(zhí)行 Spark 統(tǒng)計(jì)任務(wù) python spark_jobs/sales_statistics.py # 第二步啟動(dòng) Streamlit 可視化服務(wù) streamlit run dashboard/app.py啟動(dòng)成功后終端會(huì)輸出本地訪(fǎng)問(wèn)地址默認(rèn)是http://localhost:8501。用瀏覽器打開(kāi)后預(yù)期看到以下內(nèi)容頂部標(biāo)題與系統(tǒng)簡(jiǎn)介。三個(gè)指標(biāo)卡片總銷(xiāo)量、品牌數(shù)量、品牌平均銷(xiāo)量。品牌銷(xiāo)量排行柱狀圖顯示銷(xiāo)量最高的前 10 個(gè)品牌。價(jià)格區(qū)間銷(xiāo)量占比餅圖。地區(qū)銷(xiāo)量對(duì)比條形圖并且可以通過(guò)側(cè)邊欄篩選地區(qū)。答辯演示時(shí)建議按以下節(jié)奏操作每一步都能對(duì)應(yīng)到系統(tǒng)功能打開(kāi) Streamlit 頁(yè)面先展示整體布局說(shuō)明每一塊區(qū)域的功能與對(duì)應(yīng)數(shù)據(jù)來(lái)源。在側(cè)邊欄切換品牌和地區(qū)展示圖表的實(shí)時(shí)聯(lián)動(dòng)效果證明系統(tǒng)具有交互分析能力。切換到終端窗口展示 Spark 任務(wù)執(zhí)行日志指出聚合計(jì)算的分區(qū)數(shù)量和完成耗時(shí)。打開(kāi) HDFS 目錄命令展示原始數(shù)據(jù)文件在分布式文件系統(tǒng)中的存儲(chǔ)位置。最后回到項(xiàng)目代碼用一兩頁(yè) PPT 重點(diǎn)展示數(shù)據(jù)管道五層模型。如果頁(yè)面出現(xiàn)空白或圖表不顯示優(yōu)先檢查data/output/目錄下 Spark 是否生成了 CSV 文件以及文件路徑是否與pd.read_csv中的模式匹配。10. 常見(jiàn)問(wèn)題與排查思路開(kāi)發(fā)過(guò)程中最容易踩的坑按出現(xiàn)頻率從高到低排列如下。問(wèn)題現(xiàn)象可能原因排查方式解決方案Streamlit 無(wú)法啟動(dòng)或端口被占用8501 端口已被其他進(jìn)程占用查看終端報(bào)錯(cuò)信息運(yùn)行netstat -ano | findstr 8501使用streamlit run app.py --server.port 8502更換端口pd.read_csv(data/output/brand_sales/*.csv)找不到文件Spark 輸出的文件不是單個(gè) CSV而是目錄下的多個(gè) part 文件用hdfs dfs -ls data/output查看目錄結(jié)構(gòu)用通配符*.csv匹配或調(diào)整 Spark 輸出為單文件模式Spark 任務(wù)運(yùn)行內(nèi)存不足本地 JVM 堆內(nèi)存設(shè)置過(guò)小查看 Spark 日志中的 OutOfMemory 信息在提交命令中添加--driver-memory 2gHDFS 上傳文件失敗NameNode 未啟動(dòng)或權(quán)限不足運(yùn)行hdfs dfs -ls /測(cè)試連接重新執(zhí)行start-dfs.sh檢查用戶(hù)權(quán)限CSV 中文讀取亂碼文件編碼與讀取編碼不一致用文本編輯器查看文件編碼格式pd.read_csv中指定encodingutf-8Streamlit 頁(yè)面圖表不聯(lián)動(dòng)篩選變量沒(méi)有傳給圖表數(shù)據(jù)源檢查側(cè)邊欄變量是否在px.bar中作為過(guò)濾條件在圖表繪制前增加篩選邏輯例如brand_df[brand_df[brand] selected_brand]這里單獨(dú)說(shuō)一下 Spark 輸出文件的問(wèn)題Spark 在分布式模式下寫(xiě)入數(shù)據(jù)時(shí)默認(rèn)會(huì)在輸出目錄下生成多個(gè)part-00000文件而不是一個(gè)單獨(dú)的result.csv。如果你希望在 Streamlit 中更方便地讀取可以在寫(xiě)入前調(diào)用coalesce(1)強(qiáng)制合并為一個(gè)分區(qū)輸出brand_sales.coalesce(1).write.mode(overwrite) \ .option(header, true) \ .csv(data/output/brand_sales)但要注意coalesce(1)會(huì)降低數(shù)據(jù)寫(xiě)入的并行度。真實(shí)項(xiàng)目中數(shù)據(jù)量大時(shí)不建議使用這個(gè)點(diǎn)也可以在答辯時(shí)主動(dòng)說(shuō)明展示你對(duì)性能與易用性之間權(quán)衡的理解。11. 畢業(yè)設(shè)計(jì)最佳實(shí)踐與避坑指南這個(gè)項(xiàng)目雖然技術(shù)棧清晰但如果不注意工程規(guī)范很容易在開(kāi)發(fā)過(guò)程中變得混亂。下面幾條建議來(lái)自真實(shí)開(kāi)發(fā)經(jīng)驗(yàn)?zāi)軒湍闵僮吆芏鄰澛贰?1.1 數(shù)據(jù)字段統(tǒng)一命名爬蟲(chóng)、Spark、Streamlit 三個(gè)環(huán)節(jié)共享同一套字段結(jié)構(gòu)。建議在項(xiàng)目根目錄維護(hù)一份README.md記錄每個(gè)字段的含義、類(lèi)型和取值范圍。比如sales_volume的單位是“輛”price_range只能是預(yù)定枚舉值。這份文檔既是開(kāi)發(fā)備忘也是撰寫(xiě)論文時(shí)“數(shù)據(jù)字典”章節(jié)的素材。11.2 分階段推進(jìn)不要一次做完建議按以下順序推進(jìn)項(xiàng)目第一階段用模擬數(shù)據(jù)跑通 Streamlit 頁(yè)面和圖表交互。 第二階段編寫(xiě) Spark 統(tǒng)計(jì)任務(wù)產(chǎn)出統(tǒng)計(jì)結(jié)果替換 Streamlit 的數(shù)據(jù)源。 第三階段實(shí)現(xiàn)爬蟲(chóng)采集真實(shí)或模擬接口數(shù)據(jù)。 第四階段接入 HDFS形成完整存儲(chǔ)鏈路。 第五階段加入定時(shí)調(diào)度讓系統(tǒng)能自動(dòng)更新數(shù)據(jù)。每個(gè)階段都有可交付、可驗(yàn)證的成果避免最后階段才發(fā)現(xiàn)鏈路不通、無(wú)從排查。11.3 結(jié)果數(shù)據(jù)落庫(kù)而不是反復(fù)計(jì)算Spark 計(jì)算完成后把聚合結(jié)果寫(xiě)入結(jié)果表或輸出文件。Streamlit 頁(yè)面只讀取結(jié)果不參與大數(shù)據(jù)計(jì)算。這樣設(shè)計(jì)的好處是頁(yè)面響應(yīng)速度與數(shù)據(jù)量解耦不會(huì)因?yàn)樵紨?shù)據(jù)增大而讓 Dashboard 變慢。11.4 善用定時(shí)任務(wù)讓數(shù)據(jù)自動(dòng)更新如果希望在答辯前展示系統(tǒng)的“數(shù)據(jù)更新能力”可以用APScheduler實(shí)現(xiàn)定時(shí)采集和定時(shí)分析# 文件路徑scheduler/update_task.py from apscheduler.schedulers.blocking import BlockingScheduler from crawler.car_sales_crawler import main as crawler_main from spark_jobs.sales_statistics import main as spark_main def daily_update(): # 先采集數(shù)據(jù) crawler_main() # 再將數(shù)據(jù)上傳 HDFS # 最后執(zhí)行 Spark 統(tǒng)計(jì)任務(wù) spark_main() if __name__ __main__: scheduler BlockingScheduler() # 每天凌晨 2 點(diǎn)執(zhí)行更新任務(wù) scheduler.add_job(daily_update, cron, hour2, minute0) scheduler.start()這個(gè)模塊放在系統(tǒng)中等于給項(xiàng)目增加了一個(gè)“定時(shí)數(shù)倉(cāng)更新”的場(chǎng)景答辯時(shí)是一個(gè)明顯的加分項(xiàng)。11.5 代碼注釋和日志規(guī)范化項(xiàng)目源碼中核心函數(shù)必須寫(xiě) docstring關(guān)鍵步驟要有日志輸出。建議使用 Python 的logging模塊把爬蟲(chóng)采集量、Spark 處理耗時(shí)、Streamlit 啟動(dòng)日志都記錄下來(lái)。這不僅是良好代碼習(xí)慣也方便你在論文里展示系統(tǒng)可觀(guān)測(cè)性。12. 總結(jié)與后續(xù)提升方向基于 Streamlit 的國(guó)內(nèi)汽車(chē)銷(xiāo)售分析系統(tǒng)本質(zhì)上是一個(gè)“大數(shù)據(jù)分析技術(shù)的完整落地案例”。它把 Python 爬蟲(chóng)、Hadoop HDFS、Spark、Streamlit 這些技術(shù)名詞串成了一條真實(shí)可運(yùn)行的數(shù)據(jù)管道既能作為畢業(yè)設(shè)計(jì)選題也是一份很好的大數(shù)據(jù)應(yīng)用開(kāi)發(fā)入門(mén)項(xiàng)目。后續(xù)如果還有時(shí)間可以從以下方向繼續(xù)擴(kuò)展把 Streamlit 部署到服務(wù)器通過(guò) Nginx 反向代理讓其他人可以通過(guò)公網(wǎng)地址訪(fǎng)問(wèn)系統(tǒng)接入更多維度的外部數(shù)據(jù)分析讓圖表更有業(yè)務(wù)意義將 Spark 計(jì)算從本地模式遷移到 YARN 集群驗(yàn)證分布式環(huán)境下的計(jì)算性能引入定時(shí)調(diào)度框架讓整個(gè)數(shù)據(jù)管道每天自動(dòng)運(yùn)行。技術(shù)路線(xiàn)沒(méi)有唯一答案。有人用 Flask 做可視化有人用 Hive 做數(shù)據(jù)倉(cāng)庫(kù)也有人用 ClickHouse 做實(shí)時(shí)查詢(xún)但核心思想是一致的數(shù)據(jù)采集、存儲(chǔ)、計(jì)算、展示必須是一套完整鏈路。你能把這條鏈路講透、跑通這就是一個(gè)高質(zhì)量的畢業(yè)設(shè)計(jì)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩无码色色| 91人人爽狠狠狠| 五月天伊人| av九九| 黄桃AV无码免费一区二区三区| 丁香五月天视频在线播放| 性爱五月丁香| 久久天堂女人| 另类伊人婷婷| 成人中文网| 97碰碰在线观看视频| 99热这里在线精品| 午夜激情综合| 免费视频舔| 久久人人做人人妻人人玩精品va| 色情五月综合婷婷| 深爱五月激情| 色呦呦美女| 国产人妻777人伦精品HD| 伊人玖玖网| 丁香五月婷婷88在线| WWW,五月| 色五月婷婷91| 另类在线| 丁香五月激情啪| 日日操,夜夜爽| 五月天激情四射| 丁香五月婷婷影视先锋| 99精品国产乱码久久久人妻| 99久久99热| 91色性感五月婷婷丁香| 成人综合视频网址| 我淫我色婷婷五月天激情四射| 五月婷婷成人| 国产成人网址| 精品人妻伦九区久久AAA片| 色色五月婷婷久久| 超碰人人91| 五月色天情| 99精品国产在热久久| 激情五月天偷拍综合网| 五月天婷婷7米| 六月丁香婷婷六月激情综合| 婷婷五月天男人影院色色网| 天天做天天摸| 97干在线| 91碰在线| 色婷婷电影网| 7EzOBIhNq85TO| 99成人在线观看| 激情婷婷五月天| 人人干av| 久9久9热久热| 九九热视频精品| A在线观看| 五月婷激情| 久久色午夜在线导航| 91干婷婷| 婷婷趴趴| 这里只有精彩小视频视频网站| www.色色五月天.com| 天天噜| 五月天激情网页| www.色窝| 五月婷在线观看| 久久婷婷六月综合| 日本久热| 国产精品扒开腿做爽爽爽A片唱戏| 天天日日夜夜| 天天干在线播放| 婷婷九九色| 九九综合五月欧美| 中文字幕人成乱码在线观看| 另类小说色婷婷| 日本色色网| 超碰精品在线| Www.sesese丁香| 日本9区视频| co超碰在线观看| 二区成人视频| 99综合| 婷婷香蕉| 开心色播色五月婷婷| 婷婷免费无视频| 成人视频婷婷| 久久综合五月| 99婷婷色| 永久思思热在线| 欧美在线视频99| 婷婷色五月激情强奸四射| 99久久久免费| 婷婷五月丁香国产| 婷婷五月天综合网| 五月丁香花激情综合网| wuyuedingxiang99| caopeng97日韩| 99热精品一| 色五月婷婷在线观看| 色欲久久久久久综合网综合网| 丁香五月自拍| 北条麻妃伊人| 激情丁香五月婷| 五月天激情小说婷婷基地| 五月婷婷激情综合网 | 大香蕉 婷婷| 怡红院成人AV| 青青草婷婷综合五月| 五月婷婷 激情五月| 色99日韩| 欧美日韩aaa| 久99久在线| 国产日韩精品SUV| 日韩无码人妻一区二区| 成人色情五月天婷婷丁香| 五月天久久丁香| 久综合| 天堂成人A片永久免费网站| 极品精品一区二区三区在线| 婷婷五月四狠狠| www色五月天| 五月天婷婷基地| av中文在线| 婷婷丁香成人五月天| 色五月丁香总合网| 色五月婷婷亚洲| 99caobi| 亚洲操精品| 丁香婷停五月激情综合深爱| 久久99热这里只有精品| 99色视频在线观看最新| 99这里| 专区无日本视频高清8| 国产成人亚洲综合亚洲| 丁香五月六月欧美| av大香蕉| 五月天婷婷久久日| 超碰爱爱爱| 婷婷婷婷色| 久人人操| 日韩啊啊啊| 久久精品99国产精品日本| 另类激情五月| 亚洲中文av| 欧美综合丁香网| 九九视频这里只有精品| 色色色国产| 丁香婷婷深情五月亚洲| 牛牛色av| 婷婷激情六月| 无码髙清| 先锋资源婷婷| 婷婷九九视频| 91se在线观看| 日韩AV片| 天天色综| 四色99久久| 中文AV在线播放| www热久久yy9| 九九综合九九| 五月婷在线| WWW.天天日| 五月婷综合| 99热网站| 国产麻豆视频| 99A片| 色婷婷狠狠禁久久| 91综合色| 婷婷五月天美女| av在线资源| 色综合色婷婷色伊人| 五月丁香六月婷| 亚洲色碰| 欧美综合激情| 影音先锋四区| 伍月激情天| 国产精品久久久久久久久久免费 | 免费九九热| 午夜成人AV在线| 婷婷91| 热久久99热欧美国产亚洲| 天天爽在线视频| 丁香六月欧美| 婷婷五月天成人网站| 婷婷色偷拍| 婷婷五月丁香六月| 伊人午夜综合色啪| 婷婷天堂综合| 婷婷日本色| 丁香狠狠色婷婷| 综合五月婷婷| 婷婷五月丁香国产| 小视频久久久aaa| 五月婷婷久久爱| 婷婷六月偷拍| 精品久久艹| 丁香五月婷婷性爱| 丁香激情五月少妇| 精国产品一区二区三区A片| 先锋影音男人的天堂AV| 99热.com| 九九在线这里只有精品视频 | 91精品国产99久久久久久天美| 婷婷丁香五另类网站| 九九视频在线观看| 九九婷婷网五月天| 同性gv国产精品一区二区| 婷婷五月欧美综合| 日本va欧美va国产激情| 激情五月天婷婷五月天| 九九这里精品| 丁香5月激情网| 极品人妻VIDEOSSS人妻| 激情婷婷六月天| 色色色色色色色色色999| 狠狠色网| 色九四色| 婷婷五月 丁香六月| 中字幕视频在线永久在线观看免费 | 欧美成人无码一区二区三区| 操逼巨乳91| 亚洲综合激情五月久久| 色啪影院| 玖玖爱综合网| 无码色| 色情丁香五月天| 亚洲激情五月| 九九九九中文字幕| 久久机热探花| 久久综合九色综合88i| 天天干天天操天天拍| 国产精品人人妻人人爽| 六月丁香久久| 色婷婷五月天视频在线| 五月丁香花婷婷玉莉AV| 人妻 性久久久久久| 人妻人人操| 亚洲天99| 青草视频在线播放| 精品人妻久久久久久| 丁香五月激情婷婷| 激情q青青草在线婷婷| 综久久久| 亚洲成人影视在线| 五月天激情综合| 17.c黄色| 99精品视频在线| 99人人操人人操人人精| av五月天婷婷丁香| 成 人片 黄 色 大 片| 青草青青草| 丁香五月在线视频| 五月婷丁香| 色99免费视频中文| 婷婷色色网站| 麻豆AV一区二区三区| 狠狠狠狠狠狠色| 五月天激情婷婷小说| 色欲婷婷五月天| 色九九一二| 亚洲精品久久久久久久久久吃药| 伊人啪啪网| 99久久6| 无码激情精品色婷婷久久久久| 久久精品系列| 色五月婷婷青娱乐| 亚洲成人综合网在线免费观看| 天天插天天射| 99自拍视频在线| 欧美α√| 丁香六月成人| 毛片毛片毛片毛片| 天天操天天日天天操| 99在线精品视频观看免费下载| 婷婷五月丁香色播| 九九九九九九综合| 五月花激情网| 99re在线免费视频| 婷婷五月天性爱视频| 玖玖色综合色| 五月综合激情久久| 教师性爱毛片| 野战毛片三一3| 国产精品A片| 啪啪 综合网| 色五月六月婷婷| 天天色爽| 天天操天天日天天爽| 婷婷五月天改成什么了| 天天在线XXX| 亚洲欧美婷婷五月色综合| 久久33视频| 成人综合网站| 激情都市另类| 成人AV播放| 激情九月婷婷九月| 大香蕉视频婷婷| 1024操逼| 婷婷99丁香| 丁香花五月天婷婷成人社区| av电影在线播放| 麻豆忘忧草午夜| 两性婷婷丁香五月| 奇米四色五月天| 国产阿姨日皮艹逼内射视频| 精品一区二区三区四区五区六区介绍 | 99色 | 五月丁香婷色| WWW.桔色成人.COM| 五月天丁香婷婷视频网址| 男人視頻站| 五月丁香| 99只有这里有精品在线视频| 国产亚洲精品久久久久久久久动漫| 精品婷婷丁香五| 男人天堂99| 色九月激情综合网| 色99在线视频| 91大屁股精品| 婷婷爱婷婷| 日本女人久久| 影院久久久| 激情文学 综合 色| 五月婷婷偷拍| 九九无毛| 日韩无码人妻一区二区三区综合 | 婷婷激情综合网| 五月网站| 91碰碰| 99视频| 黄网网站在线播放| 狠狠干在线| 777精品久无码人妻蜜桃| 97婷婷五月激情六月丁香伊人| 99久热在线精品| 婷婷六月丁香欧美视频在线| 国产精品91抖高| 99日本精品视频热| 操操国产| 丁香色成人| 丁香六月婷婷一区二区三区| 色亭亭影园| 操碰97| 天天综合色| 男人的天堂婷婷色五月| 26uuuavcom| 婷婷成人五月天| 色五月偷偷| 五月激情久久综合网| 国产又爽又猛又粗的视频A片| 97操视频| 美女五月天| 五月丁香花激情综合网| 色五月婷婷在线| 99久久.www| 色99热| 五月婷婷香蕉视频| 国产精品久久久丁香五月八戒视频| 天天骑天天操| 欧洲婷婷五月天| 天天爱天天操| 久久A热| 777精品久无码人妻蜜桃| 欧美激情五月天婷婷| 99热这里有精力| 久久与婷婷| 香焦网五月天| 伊人五月天综合网| 亚洲熟妇AV乱码在线观看| www.婷婷网| 日日天天干| 婷婷综合久久| 97在线观视频免费观看| 色婷婷裸体色性在线| 天天干天天日蜜臀av| 思思热在线精品视频网站| 淫五月停停| 久热这里只有精品66| 日本人妻伦在线中文字幕| 97久久香草精品视频| 国产古装妇女野外A片| 色五月亚洲五月天| 9久9久9久女女女九九九一九| 色99热| 激情久久综合网| 九九热婷婷| 九九九热精品| yazhoujiqingav| 五月婷婷丁香在线| 99爱视频精品| 色婷婷狠狠禁久久| 婷婷伊人綜合中文字幕| se99在线| www.97碰碰com| 任你草| 天天婷婷操| www.一区二区三区| 99色婷婷| 五月婷婷五月天激情网| www色色com| 性做爰1一7伦| 97se视频在线| 另类激情五月| 婷婷丁香成人| 丁J香六月首页| 激情久久五月天| 国产美女无遮挡裸体毛片A片| 天天操天天日天天爽| 婷婷婷久久久| 五月天大香蕉av| 玖玖五月丁香| 91人妻视频| 激情丁香九九五月综合网| 色狠狠色| 天天操加勒比| 九九久热| 怡红院院在线导航网| 色吊丝中文字幕| 六月婷婷色综合| 日婷婷| 天天噜天天爱| 九九激情综合| 五月婷婷导航| 超碰人人在线观看| 香蕉人妻AV久久久久天天| 日日噜噜夜夜狠狠久久丁香六月| 97色五月天| 久久综合五月天| 90色免费视频| www.99热国产| 九九热免费视频| 五月丁香啪啪啪| 蜜乳国产网站| 日韩婷婷五月天| 色婷婷久久久| 久综合九| 超碰人人99| 九九色插| 天天插,天天射| 五月天婷综合| 色五月婷婷色| 色五月丁香伊人五月| 婷婷99丁香| 五月婷婷色色色| 狠狠色狠狠干| 五月婷久久综合| 激情视频综合| 色五月久久成人婷婷| 第四色色六月色综合| 99热这里有精品| 99热最新| 亚洲狠狠终合停停终合| 大香蕉欧美在线| 婷婷五月天AV| 成人久碰| 国产无套精品一区二区| 五月天精品| 婷婷久久亚洲| 成人做爰高潮A片免费视频| 亚洲色色在线| 国产九九一区二区三区| www.色婷婷。com| 日本乱子人伦在线视频| 丁香五月六月综合欧美| 这里只有精品视频视频在线观看| 日本欧美成人片AAAA| 激情综合网五月| 五月天婷婷久久| 婷婷五月花| 亚洲成人五月天| 大香蕉婷婷色| 亚洲va久久久噜噜噜久久天堂| 国产欧美精品AAAAAA片| 色五月婷婷影院| 丁香九月婷婷综合| 秋霞AV淫| 亚洲精品亚洲人成人网| 色综合色色| 激情小说婷婷| 一本大道熟女人妻中文字幕在线| 色综合久久久无码中文字幕999| 五月天色五月| 老妇六区| 激情五月天噢美| 国产亚洲在线| 美女100%露全身无挡网站| 色墦五月丁香| 色婷婷欧美| 成人欧美Va| 9久久婷婷国产综合精品性色| 综合av在线| 九九精品综合| 亚洲色激情| www.25五月婷婷| 婷婷五月欧美| 色五月情| 99久久综合| 五月天色五月| 人妻尝试久久久久久久久久久久| 开心深爱五月天| 丁香五月婷婷99| 9色91视频| 天天搡日日搡aaaaⅩ| 亚洲欧美另类在线23p| 日韩九九视频| 无码yw| yirenjiqingshiping| 久久香蕉网| www,天天干| 五月婷综合网| 五月天五月色| 只有精品视频在线观看| 超碰免费成人| 3p久久| 久久ri精品视频| 性欧美大战久久久久久久83| 久久性视频| 综合伊人久久| 99无码视频| 五月婷婷六月奇米网丁香| 婷婷九月丁香| 丁香五月影院| 婷婷丁香色五月久久88| 色五月91| 五月婷婷黄色毛片| 亚洲视频在线观看99| 伊人AV五月婷| 婷婷91视频| xxxx久| 热99视频精品| 99色婷婷视频| 久人人操| 国产热精品| 激情视频网址| 91日综合欧美| 最新亚洲色色网| 婷婷色五月丁香六月欧美啪| 日韩AV一区二区三区| 伊人网欧美在线男人天堂五月丁香| 亚洲激情婷婷| 亚洲视频综合网| 久久99婷婷| 国产成人亚洲综合A∨婷婷| 久久婷婷视频| 97色操| 六月丁香激情网| 日韩成人综合网| 狠狠九九婷婷韩| 丁香五月天成人| 久久免片| 亭亭色网| 99在线观看视频| 色吊丝99| 深爱 五月天| 最新久久网址| 色播五月综合网| 天天五月情| 色婷婷丁香五月| 激情六月婷婷| 爱射综合| 五月激情啪啪啪| 99热最新网址| 嫩模草| 五月丁香六月婷婷免费| 色婷婷成人做爰A片免费看网站| 午夜成人天堂久久无码日韩久久| 天天在线XXX| 人妻中文字幕网| 五月天激情子轮| 一本大道嫩草AV无码专区| 丁香五月天欧洲在线| 色色激情网| 九九精品热播| 六月婷婷综合| av九九| 婷婷色导航| 激情五月婷婷综合| 激情久久久| 九九色影院| 亚洲第一第二网站| 久久婷婷六月| 天天日天天插| 97丁香五月| 高清av在线国产| 开心五月深爱五月丁香五月激情五月| 97国产精品女人碰碰| 99热这里只有精品一区| 五月天色婷婷网| 九97免费视频| 九九碰九九爱97超碰| 日本三级99人妇网站| 国产婷婷五月| 六月婷婷深深爱| 五月婷婷综合久久| 色婷婷五月天综合网| 色99在线观看| 国产AV一区二区三区最新精品| 婷婷中文字幕网站| 丁香五月WWW| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 黄网免费观看| 激情网第四色| 婷婷综合激情| 色五月婷婷丁香凹凸| AA丁香综合激情| 五月婷婷九| 青青草激情网| 99热在线网站| 婷婷国产日本欧美| 久久久com| 亚洲av另类在线观看| 玖玖爱资源站| 色婷婷五月天视频网站| 99性视频| 久久激情婷婷| WWW.开心五月天.COM| 激情综合网五月| 人妻免费网站| jiujiu热在线视频| 饮料下药迷倒漂亮女同事强干| 日韩精品AV一区二区三区| 97艹| 新激情五月开心五月婷婷五月丁香五月| 久99久在线观看| 中文字幕在线aⅴ免费观看| 激情五月天久久丁香| 终合激情网| 99噜噜噜在线播放| 五月婷久久| 色五月婷婷大香蕉| 久久人妻高清中文| 无码成人AAAAA毛片AI换脸| 91九色在线视频| 五月婷婷之美女图片| 伊人五月天| 日本熟妇精品99| 婷婷色操| 丁香五月天堂网AV| av网站中文| 久久久亚洲精品一区二区三区浴池| 五月丁香久| 丁香五月无码| 大香蕉丁香五月| www..com色爱| 91九色精品熟女内射| 大香蕉狼人久久| 看国产探花操逼三级片| 激情色五月天| 另类小说婷婷色| www.婷婷五月天| 五月丁香日本片| 丝袜人妻| 色射7856五月天激情四射| 丁香五月亚洲| 狠狠色综合图片| 精品无码99| 亚洲亚洲人成综合网络| 视色网在线播放| 1000部毛片A片免费观看| 丁香五月香蕉在线| 五月丁香综合影院| 免费婷婷| www,久久久| 91一起操| 久久机热/这里只有精品| 九色91国产| 婷婷精品免费久久| 热99这就是精品视频| 国产亚洲精品人人| 怡红院 久久| 五月丁香花视频| 激情丁香九九五月综合网| 久久久久视剧HD| 天天日天天舔| 五月丁香在线| 丁香网站| 丁香婷婷九月在线| 亚洲亚洲人成综合网络| 丁香五月婷婷狠狠色| 久久五月天视频| 婷婷九月在线| 色婷天天| 六月婷婷激情| 久热这里这里有精品| 性爱先锋AV| www99热| 亚洲中文丁香| 99极品视频| 激情小说五月天中文字幕| 婷婷综合在线观看视频| 互月天综合| 天天天天天天操| 99热综合| 婷婷在线免费| 熟妇内谢69XXXXXA片| 99在线精品免费视频| 影音先锋高清无码资源网| 大香蕉 婷婷| 天堂网操| 婷婷99中文字幕| 99re热精品视频国| 五月婷婷综合潮喷| 色狠狠婷婷| 五月丁香六月色| 五月叮香啪| 91狠狠色丁香婷婷综合久久| 99色综合久久| 色五月婷婷91| 婷婷丁香五月天综合网| 新精品99| 激情久久久久久| 八戒青柠影视剧在线观看| 国产,欧美,学生妹,视频| 五月丁香婷婷啪啪网| 日韩 中文 欧美| 激情婷婷丁香五月天小说| 影音先锋人妻出差| 色欲影香| 无码激情AAAAA片-区区| 狠狠色狠狠色综合日日91| 91久久九久久九久久九久久九久久| 久久五月视频| 深爱1激情网| 99综合网| 亚州成人综合在线| 玖玖综合色| 狠狠干五码| 97视频91| αV电影| 色一情一乱一乱一区91Av| 丁香五月婷婷啪| 五月色天情| 天天艹天天综合网| 激情综合丁香五月| 婷婷亚洲综合| 91精品婷婷国产综合| 综合婷婷六月| 婷婷操超碰| 91丨九色丨国产| WWW久久久| 色欲一二三| 激情色播| 狠狠爱综合| 草做免费在线观看| 亚洲婷婷基地| 久热99久热| 综合五月草| 色婷天天| www.一起草av| 久色国产| 五月天激情国产综合婷婷婷| 狠狠综合网| 狠狠高潮精品亚洲1| 午夜少妇在线观看视频| 久热99| 丁香六月综合| 婷婷久久18| 国产另类综合| 午夜伊人大香蕉| 婷婷月五天在线在线看| www.天天干| 五月天堂六月丁香亚州中文字幕久久| www.色婷婷。com| 夜夜谢天天干| 色情丁香五月婷婷精品| 婷婷五月天情色| 久久五月天精品视频| 婷婷五月天 偷拍| www.激情五月| 另类视频综合| 五月色网| 中文字幕视频在线播放| 色老久久| 中文字幕性爱视频| 综合婷婷都市激情| 九九在线精品| 丁香婷婷久| 天天日日| 亚洲亚洲人成综合网络| 激情婷婷| 色婷婷香蕉| 一级性爱视频| 97av在线视频| 九九在线精点品| 久久久久9999| 99色视频| 人人摸人人摸| 婷婷五月色| 99热成人| 五月天综合网| 五月婷在线| 亚洲人妻av伦理| 69精品人人人人人人人人人| 日本欧美成人片AAAA| 亚洲日韩一页精品发布| 国产精品久久久久久久久久| 人人爽网| 九色综合五月天婷五月| 婷婷丁香综合| 久久99精品久久久久久噜噜| 九月婷婷色色| 99久久99久久综合| 天天婷婷综合| 99热只有精品在线观看| 激情丁香五月婷婷啪啪| 天天激情欧美美女| 男人的天堂五月丁香| 五月婷A V在线| 五月天婷a在线| 日本综合99| 这里只有精品视频99| 亚洲色五月婷婷| 日韩啪啪视频| 亚洲激情 久久| 大香蕉 婷婷| 天天爽,夜夜爽| AV操逼网| 欧美经典片免费观看大全| 五月丁香六月婷婷网站| 丁香五月天天| 国产 码在线成人网站| 久久五月丁香综合17C| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 亚洲精品V天堂中文字幕| 五月天四色房丁香| 日本在线观看91| 婷婷五月花| 人妻内射麻豆视频| 9视频1在线| 99热综合| 天天做天天摸| 91成人品| 日本97在线看片| 丁香五月欧美激情| Www.婷婷五月| 99狠狠色| 啪啪啪丁香五月| AV在线中文| 狠狠干思思热| 精品人人操| 久热这里只有| 日日操天天操| 天天网站天天爽| 九九99香蕉在线视频播放| 无码操B| 精品久久久人妻| 99久久99久久综合| 一本狠婷婷综合| 一级性爱视频| 伊人婷婷五月天| 99re思思精品视频在线观看| 色偷偷色婷婷| 老妇六区| 五月天成人免费视频| 亚洲va欧洲va国产va不卡| 天天做综合| 丁香五月婷婷激情完整版| 无码人妻精品一区二区蜜桃色欲| 一级A片天天操夜夜操| 99久热在线精品| 色婷综合| 五月天色软件| 91丨九色丨国产打屁股| 丁香色综合| 99ER热精品视频| 久久综合中文| 天天精品视频免费观看| 9这里只有精品| 色区久久| 色色免费网站| 五月花激情网| AV在线不卡网站| 日欧一片内射VA在线影院| 五月丁香| 婷婷深爱五月天| 欧美婷婷精品激情| 五月天玖玖狠狠色色| 丁香婷婷激情五月| 热九九精品| 伊人久久五月天| 色哟哟性爱av| 婷婷丁香色性爱| 我淫我色婷婷五月天激情四射| JAPANRCEP老熟妇乱子伦视频| 99色干| 久久五月激情综合| 激情综合色婷婷啪啪六月天| 狠狠干婷婷| 99热这里只有精品搜| 韩国久久少妇视屏| 色情播放| 亭亭五月天黑人2014| 久草久青福利| 五月社区婷婷激情| 丁香五月丐人妻| 插插插丁香五月婷婷| 永久无码色| 久热这里只有精品性色AV| 91操在线视频| 99综合| 亚洲激情av| 久久五月天色婷婷| 色五月激情综合网| 97精品欧美91久久久久久久| 性色婷婷| 色很很96| 好吊操这里只有精品| 激情婷婷亚洲五月| 五月丁香六月欧美综合| 天天日天天操天天干| 五月婷婷m| 婷婷五月天亚洲综合| 五月网在线| 五月精品| 男人天堂99| 婷香五月激情视频| 香蕉婷婷| 亚洲成人日韩无码精品| 无码一区二区三区四区五区91c| 免费在线a| 天天综合色丁香| 色婷婷久久| 五月丁香爱婷婷深深| 思思99re这里只有| 思思精品热在线| AV网站免费在线| 99热免| 亚洲网站观看视频| 欧美色必爱| 色婷婷888| 99久久久国产大片区| 久久久久99精品成人片| 天天操屄网| 久久ww| 国产成人一区二区三区在线观看| 婷婷五月天亚洲综合网| 97人人看一| 99re思思| 丁香五月成人在线| 中文字幕人妻在线| 少妇性按摩无码中文A片| 五月天色软件| 久久草大香蕉| 激情五月婷婷综合网| 色噜噜狠狠色综合日日| 九九热在线观看视频| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 日韩婷婷五月天| 色久丁香五| 91操碰| 激情五月婷婷丁香综合网| 97干视频在线| 99热精这里只有精品| 五月天色区| 蜜桃五月天| 五月天丁香欧美激情| 久青青久| 99re思思热久久| 丁香激情五月| 国外亚洲成AV人片在线观看| 色色五月天网站| 五月天停停成人网| 午夜丁香婷婷| 久久99日本精品视频免费观看| 99日本黄站| 五月丁香六月综合激情无码软件亮点 | 丁香五月五月婷婷| 极品人妻VIDEOSSS人妻| 六月丁香婷婷色狠狠久久| 婷婷开心青青草| 日日夜夜爽| 大地9中文在线观看免费高清| 99日精品视频| 第四色婷婷五月| 综合网亚洲| 另类图片五月天激情| 伊人成人宗合网| 91大神操美女| 2021日韩无码| 五月丁香成人| www.夜夜操| 久久超视频| 六月合五月婷| 婷婷六月丁香五月| 五月 成人 婷婷| 婷婷五月六月| 五月天电影网| 欧美大奶熟女噜噜噜噜| 超碰网站在线观看| 日本在线观看aaa 99| 精品国产va久| 五月综合色| 99热1| 天堂久久性| 色综合久久8| 婷婷五月天亚洲综合| Blackedraw视频一区二区| 快乐激情五月色婷婷| 婷婷综合色| 五月天停停日日| 五月色婷婷综合| 久久婷婷超碰| 甈你aaaaa| CHINESE熟女老女人HD视频| 91九色首页| 激情五月天激情小说| 五月婷婷之综合激情在线| 色噜噜婷婷| 久久婷婷七月丁香| 99re这里有精品手机在线| 99热这里只有精品8| 五月天色色激情综合| 五月色丁香| 久久新地址| 9999三级片| 天天操B| 五月天综合视频| 超碰成人在线观看| 午夜色婷婷| 精品成人久久久久久久_一二三四视| 99热综合网| 色狠狠色综合久久久绯色AⅤ影视| 狠狠干狠狠干| 99热资源在线| 色婷婷狠狠爱| 激情深爱综合| 国产亚洲精品久久久久久豆腐| 亚洲视频丁香网va| 婷婷五月花| 狠狠干五月丁香综合网| 精品国产乱码久久久久夜深人妻| 五月天成人在线精品| 激情小说色五月| 婷婷丁香色五月久久88| 久久丁香九| 九九这里只有精品| 91久久久久久| 久久色情| 中文字幕性爱丰满| 91丨九色熟女丨首页| 九九99热久久精品66中文字幕| 久久伊人婷婷| 五月婷婷在线视频| 五月丁香欧美综合免费视频| 久久婷婷五月综合| 狠狠干青青草| 视频久久9| 九九九热精品| 五月婷婷丁香大陆免费| 日本久久激情| 天天综合五月天| 婷婷五月综合色中文字幕| 五月婷婷激情| 婷婷五月激情丁香| 亚洲旡码| 日本操B视频在线观看| 亚城区在线| 久久9精品| 丁香五月五月婷婷欧美大香蕉| 丁香婷婷在线| 五月婷婷人人人操| 五月丁香色综合| 日本人人xxx| 色很很96| 丁香五月停停av| 国产激情AV| 日日夜夜青青草| 夜色综合网| 日日噜噜夜夜狠狠久久丁香六月| 五月婷深深爱激情网| 日本九九视频| 久久97| 中文字幕激情综合| 激情网五夜婷婷| 五月丁香婷婷激情四射迷人| 五月天激情网站| 婷婷久久亚洲| 丁香五月AV综合| 色欲一区二区三区精品A片| 极品人妻VideOssS人妻| 日本熟女三区| 中文字幕第四色.999| 无码色| 人人干av| 五月天婷婷丁香视频| 无码啪啪| 色婷婷久久9.com| 成人短视频在线观看| 无码 色| 婷婷五六日| 久久网日本| 七七色综合| 亚洲无AV在线中文字幕| 超碰人妻在线| 婷婷五月视屏| 热99re| 婷色五月| 91久久综合亚洲噜噜成人在线 | 婷婷五月激情综合| 91精品啪| 91男同视频| 伊人婷婷五月天| 中文字幕丰满人妻无码专区| 婷婷玉月丁香五月在线视频| 婷婷大香蕉| www久久久久| 色婷婷亚洲综合天堂| 国产又爽又猛又粗的视频A片| 婷婷五月综合网| 婷婷五月亚洲一本在线丁香| 激情婷婷丁香色五月综合| 丁香五月激情婷婷视频| 婷婷五月天综合久久| 99精品综合在线| 夜夜嗨一区二区三区直播内容| 五月天成人综合| 99操逼| 人人人va亚洲视频在线| 涩综合在线| 思思久久99热| 噜噜色天天开心| 色婷婷久久综合久色综| 久久9RE热视频精品98| 91人妻九色大屁股| 夜夜嗨一区二区三区直播内容 | 色五月婷婷操逼| 色婷婷激情| 婷婷色5月激情网| 色五狠狠| 99久久玖玖| 中文字幕 久久9999| 爱爱色五月天| 亚洲综合网区| 五月天婷婷基地| 超碰碰碰碰| www.99热| 日韩人妻无码专区| 爱射综合| VA五月激情在线| 91丨九色丨43老版熟女| 色婷婷五月影视| 激情六月丁香| 欧美 日韩 成人在线| 综合五月婷婷| 综合久久婷婷| 久热这里这里有精品| 五月婷庭丁香在线| 很操日本7| 99思思热只有在这里看| 99爱视频在线播放| 婷婷激情五月综合| 99精品久久久久| 婷婷久久五月| 婷婷午夜天| 欧洲第一无人区观看| 91日本在线观看| 超碰在线人妻| 色亭亭影园| 亚洲99精品九九在线| 97se在线视频| 五月丁香六月激情综合| 婷婷五月电影| 【乱子伦】黄色| 天堂草在线观| 九九色综合九九色| 亚洲综合草草| 久久人妻视频| 亚洲精品国产A久久久久久| 大大香蕉综合在线| Av九九| 另类五月婷婷| www.五月天社区| 在线观看av网站| 四色99久久| 久久综合五月天激情小说网站 | 色欲天天综合| 天天摸天天爽| 久婷婷久草| 五月激情网站| 超碰av在线| 天天激情站| 丁香六月激情综合网| 丁香五月天AV在线| 久久欧洲久久| 婷婷六月激情在线视频| 影音先锋噜一噜| 爱久综合| 九九色婷婷五月天| 强伦轩人妻一区二区电影| AV在线大香蕉| 久色网五月| 人人爱操| 99啪啪视频| 99久久超级| 大香蕉九九| 久久这里只有精彩| 97热久久| 伊人91| 一二线视频 另类| 欧美啪啪网| 五月天婷婷色播综合在线| 深爱婷婷网| www.天天干| 激情久久网| 人妻久久久久久久久妻久久久久| 综合网视频| 做爰丰满少妇1313| 色色色地址| 日夜夜天天| 开心五月网 | 欧美日本不卡黄色片| 丁香六月婷婷社区| 一根材五月婷成人| 久久99精品视频| 精品一二三区久久AAA片| 色哟哟精品| 成人精品亚洲性爱| 538在线精品| 超碰色女人| 色婷婷五月综合网| 九九色逼| 人人干女人| 开心五月天激情网站| 久久久久久久人妻| 色玖玖综合| 日韩视频99| 婷婷五月丁香五月基地| 日韩综合网络男女香蕉a片| 天天狠狠夜夜狠狠2023| 人妻日日日| 91综合在线| 九九精品综合| 久xxxx| 婷婷深爱五月丁香| 国产乱妇乱子在线播视频播放网站| 婷婷天堂综合| 亚洲乱码在线观看| 色亭亭九月| 色婷婷亚洲在线| 国产AV一区二区三区最新精品 | 大伊久久| 69精品人人人人| 99热全是精品| 五月婷婷丁香瑟瑟视频| 黄色片久久| 五月婷综合性中心| 日本99久久| 久久综合中文| 婷婷久久大香蕉| www.99热在线| 五月丁香六月婷婷色情| 人妻五月天激情开心网| 色婷婷精品小视频| 人人摸人人干| 99成人精品六| 免费观看欧美成人AA片爱我多深| 色色婷婷五月| 久草五月| 天堂AV三级| 人人爱操| 这里只有精品在线视频精品| 午夜五月天| 丁香五月天在线观看视频| 久久久com| 激情小说婷婷小说| 日韩中文字幕| 色婷五月丁香久亚洲|