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
返回資訊列表
99在线精品免费视频| 9l视频自拍九色9l视频自拍九色9l社区| WWW、日本色丁香、co m| 逼里香不卡| 91热视频色网站| 五月丁香六月片| 狠狠干天天内射| 99久在线精品99re8| 狼友超碰| 婷婷五月成人| 成人九九视频| 国产操肏网站| 狠狠香蕉| 国语精品探花| 五月丁香久久呀| 热99在线| 色五月婷婷中文字幕在线观看| 色色色999| 婷婷娱乐丁香综合网| 草草色情综合网| 思思久久96热在精品国产,| 激情又色又爽又黄的A片| 熟女激情网| 狠狠干综合| 99网址在线看| 日产精品一线二线三线芒果| 丁香五月婷婷在线观看| 91男同| 婷婷五月激情欧美| 国产欧美日韩一区二区三区| 婷婷中文字幕在线| 欧美99热| 激情五月天婷婷丁香| 丁香五月天导航| 青青草原爱爱网| 99热66| 影音先锋一区| 91打屁股免费看| 99热在线免费| 亚洲婷婷丁香五月天激情小说| 无码人妻一区| 天天插天天操| 亚洲美女网Va| 婷婷亚洲在线| 337p大胆噜噜噜噜噜91Av| 婷婷亚洲色| 久久亚洲婷婷| 欧州色色| 激情五月四色| 五月丁香六月婷婷a v| 热99一二三| 伊人大综合| 噼里啪啦在线观看免费完整版视频| 色色婷婷综合网| 69久久99精品久久久久婷婷| 六月丁香大香蕉| 婷婷色色欧美| 色月丁| 激情丁香五月婷婷| 99热6精品| 综合五月网| 色婷婷激情四射视频| 日日干日日| 丁香六月天堂| 色色综合网站| 久久激情五月| 丁香网站| 九月久久婷婷| 九九综合久久丁香婷婷,开心激情综合网| 五月婷婷丁香| 99精品热| 丁香六月啪啪| 激情五月图| 另类色视频| 9热视频在线观看| 五月天婷婷激情四射综合| 中文字幕成人| 97操碰日本女人| 搡BBBB搡BBB搡18 | 4438亚洲欧美| AV人人操| 五月天色五月| 日hao1区| 99爱最新免费视频在线观看| 99热最新网址| 久操激情| 激情五月丁香五月| 五月婷婷操操| 久婷婷| 色天天狠狠干| 国色天香伊人狠狠色| 五月色丁香综合| 亚洲六月婷| 日本美女97在线视频| 日日婷婷不卡| 五月丁香A∨在线| 中文AV在线观看| 男同91 | www.cao.com久久| 婷婷激情四射五月天| www.日本91| 激情深爱五月婷婷| 开心激情站| 日日操夜夜擼| 综合激情五月丁香9999久久精| 人人操人人爱丁香五月| 激情五月婷婷在线观看| 5月丁香美女影院| 六月丁香中文字幕| 99热激情| 五月丁香六月婷| 日韩日比视频在线| 色婷婷婷婷| 97人人操在线| 婷婷五月激情五月激情| 老美AA片| 亚洲成色综合网站免费观看| 五月天婷婷在线播放免费| 婷婷丁香色五月久久88| 国产精品久久久久久妇女6080| 五月婷婷六月丁香| 丁香婷婷色五月| 五月丁香六月情| 97色碰| 91pornav在线| 色偷偷五月天| 99re6在线视频精品免费| 99在线爽| 五月天激情久久| 丁香网五月天| 丁香五月六月激情| 99欧美热| 99热这里只有99| 天天日人人爽| 日本欧美成人片AAAA| 五月婷婷欧洲| 亚洲性图一区二区三区| 五月天社区| 狠狠综合| 狠狠干婷婷| 日韩欧美一级大黄网站| 九九热在线观看视频| 丁香六月综合激情| 青青草a在线| 常久最新免费的色吊丝| 操草草草| 狠狠va| 伊人久久艹| WWW.久久久久久久| 婷婷久久综合久色| 2013AV天堂| 九九色综合视频| 97精品人人A片免费看| 国产色色在线| 乱乱av| 激情婷婷五六月天| 成人αV视频免费观看| 丁香五月激情欧欧美| 婷婷五月天激情网| 伊人五月天综合网| 五月丁香色色| 特级操b片| 婷婷深爱五月| 中文字幕在线播放视频| 啪啪91| 婷婷四月 成人 狠狠干| 三日本无码| 天天插,天天射| 中文字幕激情综合| 欧美99热| 色丁香五月| 丁香五月综合久久| 97色婷| 色婷婷丁香五月丁香| 江苏少妇性BBB搡BBB爽爽爽| 性色天| 爽极品色| 97爱艹婷婷开心丁香激情综合| 丁香五月色情| 伊人色综合影院视频| 日本五月婷婷| www,五月天激情| 99re在线免费视频| 99热亚洲| 婷婷开心青青草| 欧美日韩成卜| 91丨九色丨东北熟女| 国产成人AV在线播放| 丁香综合网| 婷婷大美在线| 97色色综合| 青青草激情网| 五月丁香六月激情在线| 99热6这里只有精品6| 天天日天天久久青青| 成年人丁香五月| 99久久99久久综合| 日韩操女| WwW色婷婷| 激情婷婷亚洲五月| 日本三级中文字幕| 久久久免费图片视频| 日韩 中文 欧美| 国产婷婷综合在线免费视频| 亚洲欧洲中文日韩久久AV乱码| 久久在线视频只有这里有精品| 国产黄色在线| 色99视频| 日韩成人AV在线| AV伊人青草丁香六月| 欧美三级视频| 久久久天堂国产精品女人| 国产亚洲色婷婷久久99精品91| 色婷婷四色| 在线日韩视频| 中文字幕激情综合| 国产欧美日韩一区二区三区| 久久网日本| 亚洲色图欧美色图日本视频| 伊人久久五月天| www 五月天 com| 亚洲激情综| 久久A极片| 婷婷99狠狠| 色综合激情| 天天操天天操| 婷婷色五月久久| 中文AV在线播放| 综合九色| 91窝窝| 国产肥白大熟妇BBBB视频| 五月综合激情| 超碰九九热| 综合久久六月| 婷婷中文字暮| 日本操逼九九九九58日本操逼| 综合五月草| 日操夜操天天操不卡| 久久伊人五月天| 婷婷五月深深的爱| 狠狠色色综合| 99爱爱网| 9 7总站超级碰免费视频| 99色在线| 狠狠色色| 成人美女网| 九九av| 这里只有精品免费视频| 99热精品在线观看| 日本人妻伦在线中文字幕| 可以免费观看的AV| 成人综合网站| 天天碰夜夜操| 九一娱乐在线观看视频| 高清国产一级婬片a免费| 可以看的AV| 中文字幕,综合,91| 五月丁香六月激情视频| 九九这里是免费的视频5| 五月婷婷导航| se99视频| 五月婷婷六月丁香| 丁香五月激情五月| 26uuu精品一区二区| 五月激情网站| A一级操| 九九热10| 涩五月色婷婷| 人人妻人人澡| 色色无码| 一起操最新网址| Www.Av网9| 国产JK精品白丝AV在线观看| 99热草草| 超碰爱爱爱| 久久加勒比| 成人av观看| aa久久| 五月婷丁香花| 激情婷婷五月天日本系列| 激情五月婷婷五月| 丁香五月天社区| 国产69精品久久久久999小说| 婷婷综合中文| 久久婷婷色综合| 激情五月天噢美| 色婷婷成人影片| 九九机热| 99爱视频在线| 天天综合色| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | www色五月| 青草视频在线播放| 婷婷97碰碰| 色之综合网| 99色1| 久久视频婷婷| 久草婷婷网| 九色无码| 激情综合色婷婷啪啪六月天| 五月天激情四射| 99精品偷自拍| 国产成人网站在线观看| 五月天 另类图片| 久久性操| 九九久久污| 久久久8| 五月丁香婷婷成人伊人网| 狠狠色综合久久| 久久99久久99精品免视看婷| 婷婷五月丁香综合瑟瑟| 天天狠狠插| 日日日日日| 亚洲婷婷丁香| 久久天堂女人| 五月婷婷在线网站| 思思热在线观看| xxxx五月天色色| 综合狠狠伊人| 91五月天| 97人人做| 综合激情五月婷婷| 99热在线播放| 99热最新精品| 久久小片| 五月婷婷先锋| WWW.色婷婷.COM| 丁香五月手机在线| 九九色中文| 婷婷五月天堂| 色yeye色综合| 丁香五月欧美激情| 大香蕉 婷婷| 异能之下短剧免费观看全集| 五月天婷婷免费| 日韩一级| 战争与艾拉电影免费观看| www.五月天| 激情四射婷婷色色色| 婷婷五月丁香成人| XX色综合| 天天添天天摸天天天天做| 天天天天操| 人人操插| 欧美久热| 天天做天天爱天天摸| 变态另类9| 99精品女人天堂| 久久久久久久合一狠狠做深爱| 被男人添B超爽视频| 丁香五月欧美成人| 91狠狠色丁香婷婷综合久久| 99在线观看| 99超级碰碰| 亚洲色图在线视频| 超碰网站在线观看| 久9热在线免费观看| 五月天色婷婷图片| 激情五月天天| 精品亚洲VA网站| 欧美色激情四射| 五月激情综合婷婷| Aaa久久| 欧美婷婷五月天综合| 久久小说| 五月婷婷综合潮喷| 日韩成人电影Av| 色中色综合| 五月婷婷综合网| 久久五月天色婷婷| 色五月丁香A欧美com| 这里只有精品在线播放| 在线播放成人| 91狠狠综合网| 五月花综合网| 91五月花丁香| 玖玖爱综合网| 妻久久久久| 最近中文字幕2019视频1| 日韩一66精品| 墨西哥毛片内射精| 色色色色色网站| 五月天丁香啪啪啪啪| 婷婷五月天视频亚洲| 婷婷色偷拍| 国产免费AV网站| 99热在线观看免费中文| 久久婷婷五月丁香蜜桃网| 天天做 天天爱| 精品一区二区三区三区| 99热这里只有精品2| Caoporn公开| 538在线精品| www.97碰碰com| 色色网站| 色五月在线观看| 欧美在线视频免费播放| 99网| 婷婷五月天网址| 狠狠搞五月天| 91九色PORNY中文啦| 欧美精产国品一二三区| 婷婷中文字幕版| av第一二区| 99热9| 亚洲色vA| 9.1综合网| 综合激情九月婷婷,激情综合婷婷中文字| 淫视馆AV在线| 五区毛片七区毛片| 天天做天天爱天天日| 4399无码视频二区| 九九精品热| 婷婷性爱五月天| 婷婷在线播放av| 五月婷婷综合天天操| 五月婷婷啪啪网| 午夜爱爱爱成人| 婷婷99狠狠躁天天躁中文| 婷婷爱五月| 丁香六月情| 婷婷五月成人有| 日韩 mm 不卡| 国产五月视频| 99热只有| 91狠狠综合久久久| 久久天天| 亚洲最大五月天成人网| 五婷婷六月合| 性爱综合网| 亚洲色图日韩网址| 91亚洲视频| 99精品无码| PORNY九色9l自拍视频成人| 欧美黑人巨大猛烈cuckold| 亚洲性爱电影| 九热视频精品| 91丨九色丨国产打屁股网站| 国外亚洲成AV人片在线观看| 久热大香蕉| 激情久久久久久| 久久久五月四色| 99久久a线观| 久久久99婷婷久久久久久| 91日在线视频| 综合久久五| 蜜桃人妻无码AV天堂三区| 九九热中文| 国产五月天欧美色| 伊人AV五月婷| 狠狠狠狠狠狠狠狠| 丁香婷婷视频| 亚洲欧美婷婷五月色综合| 涩涩网五月天| 天天夜夜操| 婷婷色色网| 欧美激情xxxXX| 激情综合综合综合| 天天爽,天天操。| 综合网狠狠| 婷婷婷久久| 西西4r午夜剧场| 综合久久十三| 五月天激情日色在线| 色色色九九九五月婷婷| 99热这里只有精品8| 日韩999| 五月婷婷婷综合网| 精品婷婷| 色9色| 婷婷五月丁香激情色情| 激情网婷婷婷| 婷婷综合在线| 五月丁香成人| 色综合婷婷| 精品一区二区三区免费毛片爱| 色丁香久久| 超碰在线国产| 99色爱| 91九色PORNY肉丝在线| 九九9久九9国产视频| 婷婷D区| 91热久88| 婷婷五月综合色拍| 天天看片日日夜夜| 午夜做爱影院| 九九激情网| 爱射综合| 97超碰99热99| 中文字幕不卡+婷婷五月| 色色五月婷婷狠狠| 丁香六月婷婷社区| 99噜噜噜在线播放| 婷婷激情五月综合丁香社| 五月丁香六月综合激情无码软件亮点| 99九九综合久久九九| 婷婷五月天精品| 亚洲色色色| 综合网亚洲| 婷婷五月天黄色| 天天日夜夜| www91色网站| 99ri精品在线| 激情五月六月丁香| 五月婷婷人人人操| 丁香五月婷婷啪啪视频| 曰曰久久| 久久99成人性爱高清视频| 五月天偷拍| 能看的av网站| 丁香五月 无码| 九月丁香婷婷| 亚洲国产精品VA在线看黑人| 极品少妇高潮啪啪AV无码| 男女av免费看| www,8050,午夜三级| 婷婷五月丁香六月天亚洲综合| www.色婷婷.com| 国产乱子轮XXX农村| 月丁香久久久| 久久五月天激情视频| 激情综合激情综合| 狠狠插.com| 婷婷九九| 第五色婷婷| 少妇性按摩无码中文A片| 丁香久月| 这里只有精彩亚洲视频推荐| 五月亭亭开心网| 九九热青青草| 六月丁香激情| 五月婷婷丁香综合| 极品人妻VIDEOSSS人妻| 久热综合| 国产性爱一级| 伊人影院久久网| 婷婷六月婷婷| 成人av免费观看| 国产超碰人人| 久久人妻伦理| 六六久久黄色| 激情综合婷婷| 久久丁香| 轮奸综合网| av久热| 婷婷性爱视频在线| 99免费视频网| 色综合网页| 色五月丁香在线| 婷婷综合| 久久er九九| 99久久这里只有精品| 99碰网站| 丁香五月六月综合激情| 成人在线日韩欧美| 丁香五月开心亚洲| 狠狠爱婷婷| 久久婷婷视频| 伊人色综合久久久| 五月天丁香| AV在线收看| 26UUU精品一区二区| 啪啪视频99| 亚洲激情网站| 婷婷五月天性爱视频| 亚洲欧美另类在线23p| 九九综合九| 就爱干 在线| 日本精品人妻无码77777| 婷婷亚洲五月丁香综合在线| 亚洲五月六月婷婷| 人人噜天天上| 91丨九色熟女丨首页| 99久视频| 日本三级中国三级99| 四虎成人精品永久免费AV九九| 9月色婷婷| 伊人激情综合网| 97九色| 精品色| 777久久综合视频| 最近中文字幕2019视频1| 天天草天天舔| 超级碰碰一区| WWW免费视频碰碰碰碰| 久久草中文日韩欧美| 爱久综合| 99在线观看视频精品| 国产亚洲精品久久久久久郑州| 亚洲久久婷婷丁香五月天| 五月丁香综合精品欧美| 婷婷六月亚洲综合| 亚洲视99| 色噜噜狠狠狠狠色综合久欧美| 亚洲成人在线五月天| 五月丁香九九| 五月婷婷激情| 日韩99色99| 99热综合网| 丰满人妻一区二区三区| 五月天激情综合10p| 日韩精品99久久| 丁香五月婷婷激情网| 色婷婷中文字母五月丁香| 日本人人超碰| 97干网站| 激情五月五月五月婷婷| 色婷婷色情| 少妇AB又爽又紧无码网站| 天天夜夜爽| 黄网免费看| 99干日日干| 99综合自拍| 亚洲色五月天是什么| 九九综合五月欧美| 久久久人妻| 噜噜视频| 亚洲综合干| 婷婷99狠狠躁天天躁中文| 九九色色| 99精品久久久| 这里精品| 欧美激情xxxXX| 91凹凸在线| 江苏少妇性BBB搡BBB爽爽爽| 天天色天天搡| 亚洲另类av| 激情内射人妻1区2区3区| 激情五月天色播| 亚洲Av入口| 亚洲视频二区| 人人操人人添人人摸97| 久久一级AV| 国产 亚洲 在线| 热成人网| 亚洲 在线 性爱 | 欧美性爱特黄一级aaaassss| 五月婷婷啪| 国产免费一区二区三州老师F1F1……| 无遮羞AV| 丁香五月AV| 五月婷婷色影院| 色婷婷五月天视频在线| 狠狠干青青草| 色播播之激情五月婷婷| 色很很96| 综合大香蕉| 婷婷五月综合色中文字幕| 亚洲字幕AV一区二区三区四区| 色婷婷综合网站| 伊人五月综合网| 激情丁香五月激情婷婷| 人人色性网| 2025神马午夜福利| 99色色网| 日本九九九九| 五月激情综合网| 久久久99久久| 激情六月丁香| 久久婷丁香五月| 五月婷视频| 亚洲狠狠干| www.丁香五月| 五月婷婷丁香网| 久久丁香五月婷| www.五月瑟| 5月丁香六月婷婷| 五月丁香色婷婷基地| 99热视| 嫩草AV久久伊人妇女超级A| 中文AV在线播放| 99操逼视频| 9色在线视频| 99婷婷国产最新视频| 亚洲色图45p| 日韩av在线电影| 五月丁香成人| 人妻自慰在线| 激情黄色五月天| 思思综合热| 思思热再线视频| www开心激情网| 99色免费视频| 婷婷激情六月| 五月丁香操婷逼| 九月婷婷综合八月丁香在线观看 | 国产精品视频| 99精品视频网| 操操操97| 欧美日韩中国| 91久久| 久久婷婷成人视频| 天堂婷婷丁香六月网| 激情五月深爱婷婷| 色五月超碰| 日本丁香五月| 狠狠色 综合色区| www狠狠爱com| 亚洲天堂爱爱| 丁香六月婷婷高清| 夜夜躁爽日| 色色色干| 五月天激情婷婷| 日B日潘金莲BB| 五月婷综合激情| 67194成I人在线观看线路1| 另类色视频| 丁香六月五月婷婷| 操碰99| 国产做A爰片毛片A片美国| 色在线免费观看| 色五月色图| 狠狠肏综合网| 色无码| 五月丁香六月色| 丁香五月综合网| 六月婷婷七月丁香| sewuyuejiqingwang| 99精品无码| av中文在线| 丁香五月区| 日本不卡一区二区三区| 婷婷五月激情的图片| 九九综合精品| 天天人人人人人人人人人人人| 久久久97| 激情久久 婷婷| 丁香婷婷激情五月| 天天插天天插| 男人大jjc女人免费视频| 色婷婷A| 丁香色情五月综合网站| 久久99热这里只有精品| 五月婷婷亚洲综合在线 | 日本高清综合网五月丁香| 99综合免费视频| 丁香五月停停基地| 深爱丁香激情| 99久久这里只有精品| 五月丁香最新| 五月天色在线| 高清无码网址| 性天堂久久| 99日这里只有精品| 青柠影视免费高清电视剧| 99九九99九九九视频精彩| 激情五月婷婷在线| 97自拍视频在线| 色停停香蕉视频| 99热这| 欧美成人猛片AAAAAAA| 综合激情五月天| 色爱综合网| 久久亭亭电影| 天天干天天爽天天操| 99热色精品| 天天色综和网| 亚州色色色| 非洲一级AV| 草综合14| 国产在线视频1234| 日韩操逼小电影| 人妻丰满精品一区二区A片| 99热r| 天天综合网91| 九九精品综合| 国产精品视频| 婷婷射图| 超碰色综合| 99爱99操| 在线观看av网站| 射琪琪| 丁香六月婷婷综合缴| 99久久久精品| 亚洲aV写真天天综合网久久| 欧美一级a| 人人摸人人干人人做| 五月天开心色色网| 亚洲综合色丁香五月天| 极品人妻VIDEOSSS人妻| 青青草护士中出内射-欧美电影在线天堂新版 | 丁香网五月天| 五月色天五月色| 色五月,com| 亚洲九九在线| 人人操超碰| 美国色五月天婷婷资源站| 操日本色| 天天爱天天秀天天做| 国产44页| 成人av在线网址| 大香蕉五月天婷婷丁香91| 欧美精品啪啪| 激情五月婷婷丁香六月| 激情小说五月天| 四虎婷婷五月天| 欧美,日韩成人在线| AAAA网站| 狠狠狠狠狠狠色| 激情五月天婷婷五月天| 六月色婷婷欧美| 久久婷婷青青草| 综合九九| 五月婷婷与六月丁香图片激情| 东京热免费视频| 开心婷婷五月激情网小说| 九九色综合| 99热这里只有在线| 97热精品| JAPANRCEP老熟妇乱子伦视频 | 日本精品久久久久中文字幕| 人人舔天天| 丁香五月天堂网AV| 精品色| 99热这里只有国产精品| 综合www色| 色色色热| 久久久久久五月天| 久久久大香蕉| 久久激丁香| 丁香久久五月婷综合| 五月伊人综合| 六月色 亚洲| 色五月综合激情| 深爱五月中文字幕| av在线免费网站 | 九九性爱网| 秋霞三级影视资源| 中文成人在线| 丁香五月婷婷啪啪| 舔色婷婷| 成人羞羞啪啪 全 视频| 97人妻人人| 涩五月婷婷| 婷婷八月丁香激情综合| 色色色综合视频| 色婷婷女优有码五月亭| 五月综合视频| 十一月婷婷激情四射| site:901-07.com| www.久操| 99热国品| 超碰成人电影| 婷婷综合色播网| 99,色| 五月婷视频在线观看| 狠狠干狠狠色| 婷婷五月天AV| 99aese| 婷婷丁香五月亚洲欧美| 超碰97色| 四川BBB搡BBB搡多人乱亂| 男人的天堂五月丁香| 色色婷婷综合网| 日本精品在线噜噜噜| 五月婷婷九九热| 激情五月丁香五月综合| 99精品在线观看视频| 亚洲色婷婷| 欧美爆乳一区二区三区| 激情综合五月激情17| 99热插| 狠狠狠狠狠狠草| 日日日日日| 天堂久久精品| 婷婷五月婷婷| 99这里只有精品|v| 丁香五月精品| 99热这里只有精品50| 五月天婷亚洲天综合网综合| 久久HD| 色婷婷无吗| 五月停性愛| 午夜天天精品视频| 国产小精品| 99久在线精品99re8热| 久久婷婷五月综合激情国产 | 中文成人在线| 国产免费一区二区在线A片视频| 任你日视频| 操逼六区| 国产精品日日躁夜夜躁| 无码区婷婷五月花开| 色色色.COM| 丁香五月天啪啪激情综合网| 伊人丁香婷婷东京| 操日本人妻视频| 五月天婷婷伊人| 婷婷丁香五另类网站| 久久综合网免费视频| 很很操96| 激情婷婷五六月天| 日日鲁鲁夜夜爽爽| 插插五月天| 久热只有这里精品| 久久这里只有精品1| 5月丁香六月婷婷| 六月久久狠狠| 26uuu欧美日本| 亚洲视色| 久久伦乱| 99热婷婷| 五月天丁香网| 无码一区精品一区视频| 五月婷护士| 亚洲天堂有码| 大香蕉狼人久久| 在线婷婷| 免费色色色| 日韩激情人伦人| 五月天色婷婷伊人网| 538在线精品| 婷婷激情九月| 精品久热| 99综合色色色| 玖玖精品婷婷| 日韩中文欧美| 五月丁香成人| 婷婷色五月色| 国产91视频| 热九九精品| 五月婷婷伊| 九色地址91视频| 色区久久| 成人狠狠成人狠狠成人狠狠成人狠狠| 亚洲成人人人操| 玖玖爱伊人| 99免费视频| 九九久久偷拍| www.黄色片-久久成人国产精品在线播放-999AV | 激情欧美婷婷| 先锋av性爱成人电影| www,99热| 亚洲黄色影视| 免费超碰在线观看| 久久人人九| 深爱 五月天| 凹凸操Av| 99久热这里只有精品| http://www.com久久久精品一区| www.五月婷| 婷婷五月天av| 天天看夜夜看| 九九九色综合| 牛牛热这里只有jingpin| 狠狠色大香蕉| 激情五月激情综合网一级丸片| 99re视频精品| 五月丁香婷婷色| 丁香五月天AV在线| 人妻AV在线观看| 婷婷色Av| 六月丁香激情网| 免费视频1区| www久| 丁香六月婷婷综合在线| wwwss在线观看| 色综合99色| 天天综合亚洲综合网天天αⅴ| 综合色播| 777影视理论片大全在线观看| 嫩草国产| 69er小视频| 五月丁香综合啪啪| 九月大香蕉| 天天天添天天操| 五月丁香| www.91婷婷| 五月天婷婷中文字幕在线播放| 天天插天天射| 香蕉操亚洲| 开心五月天激情网站| 色婷婷综合网| 九洲一级A片| 26uuu亚洲精品国产| 中文字幕人成乱码在线观看| 色色五月天网站| www激情五月天| AA片在线观看视频在线播放| 91日本在线| 丁香综合婷婷五月天| 婷婷婷婷婷婷婷婷婷婷丁香| 丁香婷婷激情综合五月激情| 人人色婷婷| 九月丁香八月婷婷加勒比| 激情婷婷色小说| 婷婷五月丁香六月| www.com色播五月天| 成 久久| 99精品网| 亚洲综合字幕色色| 亚洲午夜视频| 99五月婷| 五月天婷婷综合免费| 日韩人人操| 五月婷婷六月婷| 日本V在线观看不卡视频网站| 五月丁香网av| 玖玖婷婷五月天| 激情综合五月天| 美女激情综合| 亚洲综合草草| 99riAV国产精品视频| 色综合久久综合| 五月天国产| 91好好热日本在线| 日本在线va| 奇米网大香蕉| 狠狠99| 狠狠色色综合| 五月综合激情| 日韩成人AV在线| 久久色婷婷| 色色色色综合网| 五月婷婷基地| 五月色情婷婷| 欧美日韩999| 情婷婷五月天在线| 亚洲乱码日产精品BD| 婷婷五月天xxx| 被强行糟蹋的女人A片| 婷婷丁香人妻| 亚洲综合色婷| 《蜘蛛女》梁铮1995| 亚洲色图啪啪| 激情丁香五月| 大香蕉婷婷五月天| 亚洲综合激情五月久久| WWW夜夜| 丰满少妇猛烈A片免费看观看| 先锋资源 996| www.一起草av| 91九色无码日韩| 亚洲AV网站| 国产毛片精品一区二区色欲黄A片| 婷婷深爱五月天在线| 美女婷婷激情亚洲| 五月天婷久精视频| 影音先锋一区| 六月天婷婷| 五月丁香六月停停| 亚洲国产成人AV在线| 91九色精品| 五月丁香久久网| 五月天sesese| 五月婷婷五月天| 日韩九区| 亚洲春色奇米影视| 五月婷婷官网色| 99无码超碰| 国外亚洲成AV人片在线观看| 亚洲国产精品综合色区| 国产精品色婷婷久久久精品| 99九九视频| 五月丁香婷中文| 人人叉久| 婷婷五月色| 这里只有精品免费观看网占| 狠狠爱婷婷爱| 亚洲妇女熟BBW| 婷婷五月丁香在线视频| 亚洲欧美婷婷五月色综合| 99噜噜噜在线播放| 停婷丁五月在线| 再綫Av免费視品| 日本理论久久| 九九碰九九爱97超碰| WWW.婷婷| 激情色中文| 97人妻人人| 天天做天天爱天天爽| 婷婷五月激情五月激情| 国产色丁香| 久青草大香蕉| 欧美性做爰大片免费看办公室| 俺去也综合| 日韩砖区| 色娸娸综合网| 五月激情综合网婷婷| 丁香五月自拍| 五月天怕怕| 五月丁香网站| 一区二区乱码视频| 国产精品久久久久久五月天加勒比| 久久婷婷五月综合激情国产| 色婷婷丁香女女| 91中文在线| 九九热视频99| 婷婷五月天久久久| 亚洲六月色| 日韩九九| 播播网色播播| 激情婷婷五月天在线观看| 97精品自拍| 精品九九婷婷| 狠狠噪| 这里只有精品视频在线| 婷婷五月天综合在线| 五月天色五月天| 亚洲区,视频区,视频区免费| 超碰色天堂| 五月丁香色停停啪啪啪| 国产日比| 97在线视频观看| 五月天婷婷爱| 欧美一级操逼视频| 热久久66| 激情综合网婷婷久久| 91久久久久久久久久久| 丁香婷婷五月综合| 五月婷天堂视频| 九九精品9| A片试看120分钟做受视频红杏 | 我去色色网五雨天| 久久久久久久五月| 欧美三级韩国三级日本三斤| 97碰碰碰免费公开在线视频| 五月天开心激情综合网| 丁香九九九九| 极品另类| 来吧亚洲综合网| 日日噜狠狠色| 九九精品在线网| 婷婷五月天亚洲精品| 欧美综合丁香网| 六月亚洲| 密乳视频| 五月丁香婷中文字幕 | 人妻中文字幕网| 亚洲视频另类| 超碰在线个人观看| 超碰成人在线免费观看| 婷婷五月综合免费在线| 国产三级在线播放| 狠狠久久婷| 天天综合91入口| www.激情com| 99热综合网| 婷婷伊人五月天| 五月丁香婷婷基地| 99综合| 91久热| 人与禽A片啪啪| 九九热123| 欧美五月婷婷综合| 99丝袜精品视频网站| 99热欧美精品| 99在线视频精品| 丁香婷婷六月激情文学| 操操操av| 开心五月婷婷激情网| 五月激情久久综合网| 996er热| 99玖玖免费视频| 丁香五月五月婷婷| 中文毛片无遮挡高潮免费| 欧美性生交XXXXX无码小说| 九色在线五月婷婷网址| 热久久婷婷| 婷婷月综合| 天天操夜夜爽天天操| 人人色AV| 六月婷婷久久| 成人AV中文字幕| 色色性爱视频| 疯狂做受XXXX高潮A片| 一本到不卡高清DVD| 色五月中文字幕| 丁香五月综合| 五月婷婷在线网站| 99热免费观看| 色色色色色色色色综合网| 夜夜穞天天穞狠狠穞AV美女按摩| www五月婷婷| 91九色小视频| 婷婷色五月婷婷姐妹| 婷婷五月天论坛| 夜夜躁爽日日| 免费视频无码| 一本到不卡高清DVD| 五月婷婷啪啪啪| 天天综合干| 99热这里有精品| 五月婷婷综合在线| 激情婷婷五月在线合集| 色九月婷婷综合| 天天干天天干天天干天天干天天干天天| 天天精品视频免费观看| 五月丁香六月婷婷网| 超碰免费人人肏| 97中文在线| 欧美激情-区二区三区| 久久xxxx| 淫视馆av三区| 九九av| 婷婷丁香人妻天天爽| 操一区| 五月丁香综合成人社区| 99热99热在线观看| 99热这里只有精品免费| 色婷婷在线视频| 激情四射婷婷色色色| 色婷婷4| 成人AV中文字幕| 久久丁香五月天| 国产精品18久久久| 九九热精品99| 亚洲精品久久久久久久久久吃药| 亚洲精品国产成人AV在线| 91热视频| 五月丁香婷婷在线综合蜜桃| 精品人妻一区二区| 黄色录像网点| 好好干Av| 天堂综合久久 | 99 热国产在| 思思热视频| 亚洲愉拍99热成人精品| 91九九| 久久精彩视频| 97一区二区| 丁香六月婷婷一区| 成人永久免费视频在线观看| 琪琪色网在线| 一区二区中文字幕| 九九精品综合| 色色色色色五月| 色日本网| 成人无码髙潮喷水A片| 久久九九网| 人人摸人人澡人人| BlACKEDRAW视频一区二区| 婷婷激情五月天在线视频| 国产亚洲色婷婷久久99精品91| 色99免费视频中文| WWW.99热| 五月天激情美女久久| 丁香五色月婷婷网| 99久在线精品99re8热| 淫视馆AV在线| 天天舔天天摸| 亚洲精品成人片在线播| 亚洲色色香蕉| 超碰操日| 青青福利网| www.97视频| 色综合久久天天综合网 | 人妻AV在线观看| 天天综合 99久久婷婷| 天天草天天摸| 99草在线免费观看视频| 五月99久久| 大香蕉操操| 丁香六月婷婷五月婷婷| 久久无意婷婷| 丁香婷婷噜噜| av在线不卡播放| 激情五月婷婷网| 日韩AV中文字幕在线| 99热99热在线| 狠狠色九月| 久久五月丁香| 久一网站| 色吧综合网| 五月丁香综合啪啪| 超碰在线国产|