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
返回資訊列表
五月婷在线影院| 激情婷婷色色| 中文网AV| 无码色| 极品精品一区二区三区在线| 丁香花五月天社区| 狠色狠色综合久久| 激情内射人妻1区2区3区| 91玖玖| 玖玖资源站中文| 无码99| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 激情综合五月丁香六月婷婷| 色呦呦美女| 久久精品熟女亚洲AV麻豆| 亚洲性受XXXX五月丁香| 97在线观看| 五月丁香婷婷网网网网| 亚洲无码成人性爰网| 99热网址| 成人 在线 日韩| 久机视频这只有精品| 人人性久久| 天天综合亚洲| 色婷综合| 精品人妻一区| 久久激情综合| 日本熟妇乱妇熟色A片蜜桃| 26UUU精品一区二区c〇m| 五月丁香六月激情综合| 久久人妻视步| 成人AV在线电影| 婷婷激情性爱| 日韩免费乱轮网站| 91日综合欧美| 久久婷婷综合基地| 最新热中文字幕| 国产无遮挡又黄又爽免费网站| 激情99在线视频| 日韩免费视频| 五月丁香亚洲综合网| 狠狠狠狠青草| www.99热在线观看| 丁香五月婷婷婷婷欧美综合| 成人免费120分钟啪啪| 99re这里只有精品免费| 六月激情婷婷综合| 在线另类| 天天操天天日天天爽| 国产免费性爱| www婷婷| 精品网站:999WWW| 国产毛片精品一区二区色欲黄A片| 在线精品97| 亚洲人人操BD| 亚洲国产色婷婷| 极品少妇XXXX精品少妇偷拍| 婷婷五月色综合| 人人操婷婷| 亚洲欧美一区二区三区爱爱动图| 九九这里只这里只有精品| 精品九九久久| 俺也去五月婷婷丁| 成人五月天视频播放| 久久久com| 天天色情站| 婷婷性爱五月天丁香网| 五月开心网| 五月色综合| 激情婷婷丁香色五月综合| 五月丁香综合在线| 丁香欧美| 久久婷婷五月丁香网| 深爱五月天 开心网| 9色91视频| 国产精品久久久久久白浆色欲| 丁香婷婷综合精品六月初| 伦乱人妻| 综合色久| 亚洲色婷婷| 五月丁香婷婷福利| 婷婷天堂综合| 六月婷欧美| 91九九| 亚洲无码yw| 色六月天| 男人的天堂999| 第五婷婷伊人丁香| 婷婷91视频| 五月婷婷五月天| 青青热久精品视频在线观看| 日韩欧美一道四区中文字幕| 五月色亭丁香| 五月Huangsewang| WWW.桔色成人.COM| 97色色色| 深爱激情综合网| 五月丁香六月在线欧美| 开心久久网婷婷| 爱99干99| 亚洲黄网AV| 丁香六月婷婷综合| 超碰久热| 少妇AB又爽又紧无码网站| 综合色久| 五月丁香啪啪啪| 久久99热这里只有精品| 玖操97| 超碰人人操在线| 久久五月婷天天干| 丁香五月综合| 无码日本精品XXXXXXXXX| 久久机热/这里只有精品| 天天色情站| 开心 五月 综合| 任你搞在线观看视频| 婷婷丁香18| 99九九热在线观看| 美女五月天| 婷婷综合五月天| 婷婷五月天激情网| 欧美在线操| 丁香美女五月天婷婷| 99热骚货| 五月婷婷激情久久| 五月丁香在线| 欧美日韩成人在线| AAA久久| 丁香五月综合激情性爱| 五月天涩涩| 99九九精品视频| 996er在线观看| 色五月成人| 九九AV在线| 91精品久久久久久综合五月天| 亚洲蜜乳AV| 色婷婷在线电影| 婷婷五月丁香四射| 97久久婷婷色| 97成人丁香| 熟妇天天综合| 综合色五月| 五月天综合网| 日韩亚洲视频| 婷婷五月天国产精品| 99热99极品观看| 91互操| 9久9久| 婷婷久久女人| 久青操| 久久久久婷| 久久精品日| 欧美一线视频| 原琪琪色影院| 91精品国产91久久久久青草| 欧洲激情五月天婷婷| 五月婷庭丁香在线| 日韩综合久| 色视频五月天| 久久精品系列| 亚洲视频在线观看| 婷婷五月丁香色播| 五月激情六月| 亚洲九九99精品视频在线播放| 999热在线视频| 播播网色播播| 中文字幕无码人妻少妇免费视频 | 欧美色宗和激情| 五月婷婷香| 亚洲亚洲人成综合网络| 天天干,天天操,天天射| 激情五月色婷婷| 九九热精品| 99色热视频| 色爱亚洲| 国产精品久久久久久久久久| 开心五月婷婷婷美女| 丁香九月综合| 亚洲最大激情无码| 五月婷婷大香蕉| 人妻丰满精品一区二区A片| 操日本三片99| 中文不卡一二区| 97超碰在线免费观看| 激情五月天视频| a毛片二逼wwwwwwwwww| 日本激情91| 最新激情五月天| 婷婷五月天手机版视频| 97AV在线视频| 亚洲精品白浆高清久久久久久| 久久丁香婷婷色情综合| 成人羞羞啪啪 全 视频| 十月丁香九月婷婷综合| 久久人妻精品| 五月婷婷色综图片| 日本社区五月天激情| 婷婷五月天伊人| 五月婷在线| 日本3级片一区2区| 丁香五月中文字幕久色| 五月停停色色丁香| 久久青草国| 人人操Av| 色一情一乱一乱一区91Av| 在线不卡AC| 九九色综合| 国产五月天欧美色| 久久婷婷五月天激情新地址| 久久婷婷六月天| 99热这里只有精品9| 久久五月天婷婷| 丁香五月成人丝袜| 亚洲情a| 99re在线观看| 五月丁香久人妻中文| 成人丁香婷婷| 国产免费一区二区三州老师F1……| 五月丁香婷婷色色| 九九热re99re6在线精品| 久久久久久五月天| 初夜av| 婷婷五月激情综合| 性视频久久| 久色欧美| www.99操.com| 天天色综合网吨吧| 国产97色在线 | 日韩| 丁香婷婷AV| 久色视频在线| 久久久久人妻| site:901-07.com| 丁香久久五月婷综合| 熟妇天天综合| 婷婷五月天伊人网| 久艹久| 开心五月激情五月丁香五月婷婷| 无码AV免费精品一区二区三区 | 91久久婷婷人人澡草 | 一级性爱大片| 亚洲va在线∨a天堂va欧美va| 大香蕉综合视频在线| 婷婷开心深爱五月天| 欧美视频五区| AV五月丁香| 人妻少妇色综合| 久久丁香网| 九九婷婷五月天影视| 久色资源| 久久五月天色婷婷| av人人干| 无码动漫AV| 五月丁香黄色| 婷婷在线中文字幕| 色丁香五月婷婷在线| 午夜精品久久久久久久爽| 九九精品片一| 免费无码毛片一区二区A片| 狠狠色噜噜狠狠色噜噜噜999| 99热99干| 婷婷 久综合| 欧美久热| 五月开心婷婷| 五月激情久久| 婷婷六月色开| 六月婷婷色色网| 天天插天天很| 青柠影视免费高清电视剧| 无码九九| 国产日产亚系列精品版优势 | 国产av天天插天天操天天爽| 99视频在线精品免费观看2| 91色色色视频| 精品久热69| 91精品婷婷国产综合久久| 五月色综合| 99热九九这里只有精品| 免费看欧美成人A片无码| 六月婷伊人| 激情内射人妻1区2区3区| 婷婷五月天六月| 婷婷色色宗合网| 欧洲亚洲精品| 免费观看亚洲AV片| 婷婷五月天伊人| 深爱开心激情网| 婷婷丁香人妻天天爽| 天天舔天天插天天爱| 99久久婷婷国产综合精品草原| 97人人操在线| 亚洲国产精品VA在线看黑人| 天天插AV丝袜中| 九九九九九九综合| 久久综合激情| 丁香五月六月婷婷殴美综合| 色色色综合色| 激情小说色五月| 狠狠xx| 91丁香五月| 久久久噜噜噜久久人妻| 91久久婷婷人人澡草| 超级黄色片| 亚洲日日日| 丁香五月天婷婷中文| AV变态另类一区二区| 五月婷婷激情中文字幕| 丁香五月激情婷婷激情| 9超碰在线| 99热在线精品观看| 婷婷五月天在线综合| 五月天激情四射网站| 五月天社区| 五月婷婷九| 殴美日韩成人| 欧美经典片免费观看大全| 这里只有精品免费观看网占| 午夜大香蕉| 亚洲欧美综合7777色亭亭| 丁香激情五月| 五月天婷婷色小说| 日韩一级片| 最新无毒无码AV| 综合网啪| 天天看夜夜看| 伊人影音无码一区二区三区| a片在线免费观看一区| 玖玖资源在线视频| 99视频精品在线| 色频玖玖五月天| 人妻在线网站| 在线18av | 婷婷久久五月天丁香| 丁香五月综合福利视频导航| 综合久久综合久久| 九色1区视频在线| 婷婷金品综合视频| 看片视频在线免费日产在线看| 丁香丁香激情网| 五月婷婷国产| 99色综合久久| 99这里有精品视频| 狼人久草| 五月天激情婷婷丁香| 色婷婷五月天偷拍| 99欧美三级视频| 九九久久精品| 色99在线视频| 另类图片激情五月| 第四色五月天| 狠狠草综合网| 青青草蜜臀| 五月婷婷丁香综合| 九九 激情 网| 精品九九婷婷| 激情五月四色| 麻豆AV一区二区三区| 日本啪啪天堂| 婷婷五月丁香五月| 另类激情首页| 欧美激情综合色丁香婷婷五月天| 日本精品99| 超级久久久| 桃色成人网| 丁香大香蕉| 亚洲天码视频www蛋播视频| 香蕉婷婷色五月| 久久婷婷激情| 伊人网大香| 天天艹| 婷婷五月天桃花网| 99视频| 99无码| 97人人操人人爽| 激情www| 99国产性感视频| 精品网站99| 97色婷婷成人综合在线观看| 伊人9在线| Av在线不卡一区| 九九热123| 色色丁香| 这里有精品| 天天玩夜夜操| 另类小说色婷婷| 91seav| 五月天天综合| 日本色99| 国产成人AV在线| 成人免费在线电影| 亚洲综合草草| 久久婷婷色| 精品人人操| 99热久草| 日本久久99| 人人操AV| www.婷婷六月天| 四色99久久| 五月丁香六月婷| 情欲综合网| 98毛片| 免费成人va| 色婷婷黄色网络| 91色色色| 亚州激情在线视频| 国产精品久久久丁香五月八戒视频| 五月色导航| 久久99热精品a片在线观看| 99在线视频精品| 99热这里只有精品13| 五月丁香六月激情网| 五月综合在线婷婷图片| 九九热99精品| 天天狠狠夜夜狠狠2023| 色九亚洲| 久热免费视频| 丁香六月在线综合| 色爱综合五月| 久草五月婷婷| site:picc-up.com| 有哪些A片网站| ji'qi'luan'ren'lun| 天天艹夜夜艹| 综合久久97| 99亚洲天堂| 色色色综合网| 国产99久| 国产熟女大叫受不了| 91九色在线视频| 婷婷伊人綜合中文字幕小说| 综合色天天| 99色 色| 五月激情影院| 激情久久久| www.丁香六月婷婷久久天堂影院.con| 97艹| 久久99免费视屏| AV天堂淫乩| 丁香婷婷视频一区二区| 超碰97干| 成人做爰A片免费看视频| 综合狠久久| 丁香五月婷婷天堂大香蕉| 日韩久热| 能看的av片| 婷婷射丁香| 91ncom.色| 欧美搡BBBBB摔BBBBB| tingtingseav| 国产伦理精品高清在线观看网站一区二区| 深爱丁香激情| 国产在线黄色| 青青久在线视频免费观看| 欧美三级视频下载| 亚洲色情免费网| 日本色色视频| 狠狠狠狠狠干| 99热精品在线| 综合九九中文字幕| 婷婷婷色五月| 五月激情网站| 沈娜娜av| 久久老码第一| 午夜丁香综合婷婷| 玖玖色综合色| 超碰人人在线| 玖玖资源站中文| 色香欲综合| 久久久久久久久久久jjjj| 丁香五月婷婷综合精品素人| 成人网丁香五月| 成人在线综合| 色婷婷色丁香色欲av| 美日韩成人| 五月天色婷婷网| 色五月丁香五月| 久久9精品视频| 天天日天天爽| 欧美色97| 久久这里只有国产视频| 99热综合网| 婷婷久久婷婷色五月| 99热这里只有精品26| 99色色色色| 少妇高潮呻吟A片免费看软件| 日韩久综合| 色亚洲婷婷| 婷婷色播婷婷| 免费亚洲成人电影AV| 操逼123网| 国产激情视频在线观看| 久久思思99| 激情五月丁香在线观看直播| 五月丁香六月激情欧美综合| 91热视频色网站| aaa日韩| 九九热在线精品视频| 五月丁香啪。| 激情五月色播五月| 天天插操| 激情综合色五月六月婷婷| 五月婷婷黄色| 亚洲啪啪网| 久久免费视频62| 少妇人妻人伦A片| 激情九月婷婷| 婷婷97碰碰| 婷婷香蕉视频| 激情开心五月天婷婷基地丁香社区| 五月丁香激情啪啪| 天天射影| 国产成人99久久亚洲综合精品| 久久9999| 九九热婷婷| 伊人五月天久久| 日本不卡五月婷婷丁香| 日本黄色一级| 五月综合激情综合久| 六月丁香婷| 五月六月播婷婷| 久久婷狠狠色| 久久刺激网| 色偷偷综合| 狠狠色狠狠色综合日日91| WWW.桔色成人.COM| 碰99在线| 日本va欧美va欧美va| 丁香六月婷婷基地| 色婷婷九月| 另类丁香五月天区图| 亚洲尤物在线| 亚洲综合色婷| 五月花丁香婷婷| 亚洲日韩操B| 五月婷婷m| 激情内射人妻1区2区3区| 色情·com| 色情五月丁香| 婷婷热婷婷色| 日本黄 色 片| 五月丁香六月综合激情网| 大香蕉久久青青| 婷婷六月中文字幕| 97日本操| 五月天婷婷丁香| 色综合色婷色基地| www.精品99| 久久99婷婷| 五月丁香啪啪综合| 2025最新亚洲激情在线| 色和综合网| 99爱在线视频观看| 超碰国产在线观看| 狼人久草| www.五月激情.com| 日日操夜夜操不卡| 九九成人| 欧美噜噜噜草| 99久久国产宗和精品1上映| 26uuuavcom| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 婷婷激情五月视频| 超碰在线国产| 激情五月丁香色婷婷| 我淫我色婷婷五月天激情四射| 丁香五月电影| 色综合久久天天综合网| 97精品人人A片免费看| 五月丁香六月婷婷亚洲| 色色色色色五月| 五月婷婷综合激情网| 日本a片网址| αv中文字幕在线观| 婷婷激情社区| 99久久久久| 搡BBBB搡BBB搡18| 天天天日天天天干| 久青操| 六月婷婷久久大全| 色婷婷免费观看| 丁香五月电影| 久久久久久婷| 丁香色五月天| 亚洲综合网 665566| 99热思思| 这里只有精品69| 欧美色97| 国产毛片精品一区二区色欲黄A片| 国产,欧美,日韩,性爱| 91热网址| 成人综合网站| 少妇综合网| 久久欧洲久久| 99精品网址| 九九99久久| 五月丁香六月婷婷亚洲| 久久五月丁香婷婷| www.99色在线| 夜夜夜夜夜操| 丁香五月婷中字幕| 色黑鬼导航| 综合超碰熟| 五月色俺婷婷| 在线成人网址| 日本婷婷色| 久久婷婷伊人| 色婷婷五月天不卡| 在线观看五月婷婷网| 丁香五月天堂亚洲社区| 亚洲中文乱字字幕在线永久| 五月婷婷69| 成人视频九九| 香蕉久久六月| 91狼友视频在线观看| 97色色婷婷| 综合图区激情| 激情五月综合视频| www.色9| 操逼电影免费看| 天天干狠狠| 丁香五月五月婷婷| 99精品视频免费观看,| 色色色国产| wuyuedingxiang| 五月天激情四射| 99热在这里只有免费精品| 久婷久婷激情肉| 亚洲黄网AV| 六月婷婷中文字幕| 成人 视频免费观看网站| 99视频精品全部免费观看| 成人午夜无码视频| 婷婷六月综合| 国产亚洲99久久精品熟女| 国产精品久久久久久久久久| 99热18| 丁香六月婷婷综合| 九九色视频| 天天草婷婷五月| 亚洲欧洲国产精品| 免费人人操| 精品国产a| 成人.在线日韩| 六月婷婷色| 色99热| 五月婷婷丁香俺日污视频| 久久一二三视频| 小视频在线亚洲| 99久久婷婷国产综合精品青桔| 天天综合久久| 五月天丁香综合在线| 无码碰碰| 99riAV成人在线视频| 国产AV一区二区三区最新精品| 久久免片| 久久女婷| 久久激情视频| 操操啪| 婷婷五月电影院| 九九性爱网| 99爱在线视频| 久色激情| 狠狠色五月天| 五月婷婷官网色| jiqingliuyuetian| 日本五月天一页| 亚洲亚洲永久无码777777| 色噜综| 午夜电影网VA内射| 情涩婷婷五月天| 久久99热精品a片在线观看| 人妻videos人妻高清| 天天日狠狠| 五月天婷婷六月| 先锋资源996| 激情黄色五月天| 日韩六六久久电影| 丁香婷在线| 五月 婷婷 成人| 色狠久| 天天爽夜夜爽夜夜爽精品视频| 五月色婷婷综合| www夜夜操| 干一干xxxx| 成人国产综合| 天天插天天干| 福利视频在线播放| 中国无码av| 九九九九九九热| 另类婷婷五月天啪帕帕| 丁香五月激情啪啪啪| 日韩 mm 不卡| 狼人狠狠操| 久久婷婷六月综合| 五月丁香啪啪激情| 99日韩网站| 人人操av| 丁香五月性爱| 五月激情综合网| 色你久久| 婷婷午夜| 中文字幕按摩做爰| 就去色色五月丁香婷婷久久久| wwww.色婷婷| 婷婷五月天黄色网址| 国产精品电影| 五月天婷婷丁香蜜桃91| 婷婷五月天成人小说| 色天堂在线| 99视频在线| 天天肏在线| 99在线播放| 99熟女视频| 99热这里只有在线播放| 人人人人人人人草| 超碰在线中文字幕| 亚洲黄色影视| 97亚洲精品| 日韩色五月| 天天色爽| 中文字幕 中文字幕明步| 亚洲视频五区| 久久9热好| 玖玖婷婷色五月| 超碰三级秋霞| 99精品大片| 99欧美| 丁香,开心成人,久久| 五月天婷婷社区久久综合| 久久久思思热| 午夜色丁香| 色噜噜狠狠色综合日日| 大香蕉久久综合网| 九九精品综合| 热99这里只有精品视频| 国产精品美女| 黄色热99| 69超碰在线| 玖玖综合玖玖| 色网站99| 婷婷五月色激情欧美激情| 婷婷丁香五月综合| 久热AⅤ| 色色日韩| jiZZdr| 9l视频自拍9l九色成人| www.激情五月天.con| 激情啪啪五月天| 99久在线精品99re8| 久久性视频| 婷婷五月天久久综合88| 青娱乐美女福利视频美臀| 91丨九色丨熟女| 丁香五月婷婷激情97| 超碰99热| 婷婷五月天无码| 欧洲电影在线观看免费版英语版 | 天天干天天干天天操| 99热这里都是精品| 91日韩美女被插视频| 激情综合网,婷婷五月天| 九九大香蕉黄色影院| 91人人人人人| 婷婷久久综合久| 亚洲另类视频| 色五月丁香五| 九九爱这里只有精品| 五月婷婷丁香啪啪| 狠狠色噜噜狠狠狠狠狠色综合久久| 五月天激情黄色小说在线观看| 五月草视频| 精品一二三区久久AAA片| 丁香九月激情| 67194中文字幕| 无毒黄色网址| 激情五月综合免费| 激情综合五月| 人人综合久| 狠狠操狠狠操| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 天天色综合色| 99热这里只有精品55| 玖玖五月| 色五月综合在线| 超碰日韩人妻在线| 天堂婷婷五月在线| 久月婷婷| 色婷婷天堂| 日韩aaa| 久99在线| 激情丁香五月激情婷婷| AV九九| 日本综合久| 丁香五月香蕉| 爆乳熟女一区二区三区爆乳| 五月丁香六月情| 色婷婷精品视频在线播放| 久热这里精品免费| 色婷婷丁香A片区毛片区女人区| 99热99色| 天天射射夜| 日韩啪啪网| 激情五月综合网| 免费亚洲婷婷中文字幕| 99精品超在线播放| 婷婷久久色| 五月婷视频在线观看| 婷婷激情丁五月| 97色五月婷婷在线| 99精彩视频在线观看| 天天干天天爽| 色婷婷4| 国产精品久久久久久久久久免费| 色婷婷欧美在线| 免费视频无码| 婷婷激情五月综合基地| 国产真实乱了老女人视频| 亚色网站小视频| BBWCUCKOLD精品熟妇| 五月婷高清视频| 欧美大片| 人人干Av| 国产九月婷婷| 久久99热这里只有精品 | 99久在线精品| 久操大香蕉| 五月天激情久久| 另类五月婷婷| 少妇AB又爽又紧无码网站| 五月色丁香国产在线视频| 三十熟女| 思思 热 99| 亚洲视频无| 欧美色久| 99色综合网| 亚洲中文字幕在线观看| 26UUU精品一区二区c〇m| 无码字幕中文| 五月天婷婷乱论小说| 久9热视频| 九九热AV| 丁香五月六月婷婷自拍| 超极99精品| 色色AV色色色东莞| 999精品乱码77777| 狠狠草在线观看| 久一这里有精品国产| 精品成人在线| 综合网亚洲| 久久99久久99精品免观看粉嫩| 色五月婷激情| 婷婷五月综合免费在线| 色玖玖综合| 五月丁香六月婷婷综合在线| A片试看120分钟做受视频红杏 | 男女激情久久| 婷婷五月婷婷| 天天肏视频| 天天天天操| 99热精品6| 五月天伊人久久久久| 碰碰91| 五月人人丁香婷婷五月人人丁香| 伊人爱爱日本| 午夜丁香综合婷婷| 77799热| 婷婷色网址| 999精品乱码77777| 99爱免费在线观看| 超级碰碰一区| 天堂久久精品| 丁香五月大片| 婷婷丁香社区| 99色视频| 五月丁香六月婷婷网| 亚洲精品亚洲人成人网| 蜜桃婷婷丁香综合久久开心亚洲| 婷婷爱五月天| 99这里有精品免费| 婷婷激情四射五月天| 婷婷六月丁香五月| 五月天激情无码专区| 97操在线视频| www.com久久久久久久久久久久久久久久久| 久久这里只精品| 色六月天天激情综合网| 91欧美日韩| 亚洲激情综合| 丁香五月精品视频| 97碰碰久久| 激情综合区| 欧美天天干天天草| 日本 欧美在线| 亚洲偷| 97超碰人人操| 久久在线人妻| 国产67194| 色情婷婷久久五月天| 色五月婷婷亚洲| 26uuu欧美日本| 欧美天天爽| 欧美WW在线网| 亚洲欧洲中文日韩久久AV乱码| 99精品免费视频| 一區四區歐美日韓| 欧美久久网| 色综合视频在线| 亚洲这里只有精品| 丁香婷婷六月| 99热只有精品在线观看| 欧美久热| 丁香五月黄色| 在线中文AV| 大香蕉手机视频| 五月丁香在线观看| 99热大片| 五月总合激情网| 色欲婷婷五月天丁香| 丁香六月婷婷缴情欧美| 玖玖婷婷五月天| 日本久久精品18| 丁香婷婷综合激情五月色| 激情婷婷五月女| 婷婷午夜精品久久久| 情色五月天 网站| www久久久| 在线网黄| 天天天操天天天日| 天天拍夜夜爽日日| 97人人射| 欧美日韩国产伦精品日韩人妻一| 热99玖玖99玖玖99九九| 色色五月天婷婷| 99久久婷| 色婷六月| 天天日本夜夜谢| 丁香六月亚洲综合| 五月激情婷婷色| 永久的网站AAAA| 99在线免费视频| 99热全是精品| 日本三级日本黄色| 99九九视频精彩在线| 热99热9| 六月婷伊人| 天天综合亚洲综合网天天αⅴ| 久久人人超| 九九色区| 婷婷人妻激情| 国产原创视频91九色| 91人在线观看| 亚洲最大成人综合网720P| 天天干,天天日| 国产一级片| 日韩成人AV在线| 热99精品视频五月| 中文字幕成人影视| 五月丁香另类图片| 婷婷成人五月天成人文学小说| 天天擼久久擼在线| 五月天五月婷五月激情网| 婷婷五月天,影院| 婷婷另类开心| 五月婷婷视频啪啪美女| 五月天色婷伊人| 996er在线观看| 99色在线观看免费| 99re最新地址视频| www.激情五月天。com| 日木狠狠干| 婷婷五月天激情网址| 99热这里只有精品26| 六月婷婷天天操夜夜爽视频| 日本久久精品| 九月丁香| 五月丁香综合啪啪| 婷婷五月天视| 激情五月丁香色婷婷| 激情五月亚洲综合网| 亚洲久久婷婷丁香五月天| 99视频精品8 | 六月丁香网| 天天插天天干| 黄桃AV无码免费一区二区三区| 国产XXXX搡XXXXX搡麻豆| 亚洲亚洲人成综合网络| 丁香五月激动深爱欧美| 一本久久婷婷| 人人97操| 99啪99| 国产成人在线精品| 大香蕉婷婷| 日韩一66精品| 丁香五月综合在线播放 | 91久久五月天| 色五月六月| 一本大道嫩草AV无码专区| 粉嫩AV久久一区二区三区| 2050人人操免费工开爱| 人妻熟妇国产精品| 五月综合久久| 免费无码毛片一区二区A片| 久久ri精品| 五月亭亭欧美女人| 大香蕉综合| 激情五月天综合图片小说网站| 色婷婷丁香AV综合| 亚洲欧美999| 婷婷爱五月| 婷婷亚洲色| 最近中文字幕大全免费版在线 | 九九九九九999999| 99婷婷五月天激情| 成片免费播放| 久久996re热这里只有精品无码| 天天视频亚洲| 久热91精品| 五月丁香成人网| 91聚色综合网| 六月丁香色色色| 激情综合五月激情XXXX| 一级A片天天操夜夜操| 五月天色婷婷综合| 天天插天天插天天插天天插| 欧美三9久九观看| 婷婷五月综合色中文字幕| 色九月| 色婷婷五月天堂资源| 性综合网| 激情六月天| 九月性爱网| 激情性爱五月天| 婷婷四色五月| 超碰猛烈的性猛交| 五月天综合| 玖玖玖婷婷婷| 激情五月婷黄版| 九九视频这里只有精彩| 丁香五月性| 超PEN精品在线| 婷婷午夜综合| 六月丁香婷婷网| 婷婷五月婷婷| 内射爽无广熟女亚洲| 国产婷婷五月| 熟女乱论网| 精品久久人妻| 五月激情综合网| 五月丁香久久| 96精品国产综合久久久久久| 欧美黑人大吊| 色婷婷综合视频| 九九色精品| 激情熟女网| 九九热九九热精品| 丁香五月天婷婷激情| 中文幕无线码中文字蜜桃| 激情亭亭五月| 操逼福利视频| 久99视频在线观看| 亚洲va久久久噜噜噜久久天堂| 大香网伊人久久综合| 亚洲色情网站| 狠狠穞A片一區二區三區| 日韩三及成人AV片| 影音先锋 91工厂| 高清视频一区| 九九99九九精品视频| 夜夜骑日日操| 五月丁香婷婷婷激情爱爱| 国产真实乱了老女人视频| 人妻激情综合| 亚洲夜夜操| 亚洲激情在线| 26.uuu丁香五月婷婷| 色婷婷五月综合网| 婷婷五月综合在线| 中文字幕欧美久久| 色丁香五月综合网| 久久五月丁香| 97电影99热| 99这里只有精品99| 亚洲欧洲中文日韩久久AV乱码| 99热大香蕉| 婷婷丁香五月色| 国产乱妇无乱码大黄AA片| 99精品热视频| 婷婷五月天综合久久| 日韩成人无码| 天天骑日日爽| 在线观看的av| 碰碰碰91| 激情网婷婷婷| 亚洲乱码日产精品BD| 操操操www.com| 大香蕉婷婷色| 九九色天堂| 六月丁香婷婷六月激情综合| 被强行糟蹋的女人A片| 九九精品热| 97在线/亚洲| 婷婷久久图片| 丁香五月天AV| 久久精品熟女亚洲AV麻豆| 色婷婷欧美在线| 日本色五月| 五月丁香婷中文| 能看的AV| 9 9热这里有精品| 99re这里只有精品首页| 亚洲精品V天堂中文字幕| 99热最新地址在线| 99re热在线视频| www久久艹| 综合五月丁香六月婷婷| 熟女国产在线一区二区三区四区| 五月天激情.com| 五月天激情美女久久| 色播五月丁香综合| 亚洲乱码日产精品BD在线观看| 色婷婷色五月另类综合| 五月丁香婷婷综合网| 91操操| 午夜大香蕉| VA色婷婷| 国产 码在线成人网站| 丁香五月色色| 五月婷婷黄色| 婷婷中文在线| 六月丁香久久| 大香蕉五月天| 99热都是精品| 超碰人人操人人干| 五月丁香综合啪啪| 九九青青草成人| 五月婷婷片| 九九蜜臀精品| 天天干天天插| 五月情四婷婷| 亚洲日本韩国| 99性爱无码| 99热午夜精品| 99热这里只有精品最新网址| 激情五月天婷婷| 色婷五月| 超碰人人色| 六月综和久久| 超碰在线网站9| 激情五月,深深爱五月| 99热综合在线观看| 激情综合色播| 另类亚洲视频| 色色色五月婷婷| 538午夜激情| 色婷婷电影网| 六月婷色六月| 欧美婷婷综合| 色爽九九| 99久久婷婷| 婷婷久久综合| 激情五月,深深爱五月| 99玖玖精品| www.色色五月天.com| 超碰精品在线| 婷婷五月天影院| 日本激情五月| 人人爽欧美婷婷久久久五月丁香| 色婷婷五月天成人网| 丁香五月影院| 亚洲精品一区中文字幕乱码| 婷婷丁香激情| 午夜色丁香| 婷婷五月丁香六月| 免费的日逼视频| 日逼影音先锋男人资源站| 夜夜撸日日操| 激情五月综合| 欧美性生交XXXXX无码小说| 大香蕉五月婷婷| 色婷婷亚洲五月天| 九九99免费视频| 色五月激情网| 激情五月狠狠| A在线观看| 色色色综合| 午夜五月天| 国产成人在线精品| 日韩免费视频| 欧美黄色韩日网| 97碰在线| 苗黎美女四级成人版一级二级毛片| www.com五月天| 91精品久久久久久77777| 免费视频WWW在线观看网站| 色综合久久88色综合天天| 色综合九九色综合88| 99亚洲天堂| 开心激情播播五月天| 久久综合爱| 久久久av久av久片一区二区| 天天色天天操天天射| 丁香五月激情天AV无码| 一区二区你懂的| 高清无码中文字幕aVDV| 欧美天天搞| 97人妻碰碰中文无码久热丝袜| 激情五月天www| 色综合区| 成人国产网站在线免费看| 亚洲婷婷五月| 桔色成人官方网站| 97性视频| 日韩精品视频中文字幕| 激情图片久久| 色亭亭五月天网扯| 婷婷激情五月天小说| 99碰碰| 国产婷婷色综合AV蜜臀AV| 色色色色色热| 91久久人人操| 9久精品| 看片视频在线免费日产在线看| 五月丁香婷婷综合在线| 国产婷婷久久| 天堂成人A片永久免费网站| 九九热最新| 襙比视频| 色色色99| 超级97碰碰| 天天拍天天操| 久9免费视频| 激情宗合网激情五月天| 五月婷婷性爱| 人人操操97| 国产成人精品一区二区三区视频| 六月婷婷视频| 激情婷婷五月天在线观看| 影音先锋按摩| 18久久| 琪琪布丁香社区激情五月天| 超碰人人干| 五月婷婷六月丁香综合在线| 婷婷五月天综合蜜桃| 无码人妻电影| 亚州精品成人片| 日本欧美成人片AAAA| 色婷婷综合久久久久| 99热在线免费| 天天爽—爽| 无码人妻激情| 热婷婷久| 99久操视频| 欧美搡BBBBB摔BBBBB| 超碰精品在线| 激情六月丁| 丁香六月激情综合啪啪| A一级操| 综合网色| 五月天婷婷社区久久综合| 啪啪视频99| 亚洲V国产V欧美V久久久久久| 久99久视频| 夜夜干夜夜操| 五月天婷婷中文字幕在线播放| 婷婷5月开心6月| 五月丁了香蕉综合| 97碰在线视频|