免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
日本的α片xxxwww| 成人丁香五月| 99热最新网址| 激情九九六月激情免费视频| 亚洲宗合激情| 九九aV| 狠狠狠五月婷婷六月丁香| 91综合色| 国产婷婷综合| cao久久| 五月丁香六月激情| 天天弄天天操| 久久99网| 99热8| 日本高清综合网五月丁香| 狠狠香婷婷五月| 日韩无码性爱| 综合九色| AV免费在线网站| 国产一区二区三区影院| 少妇被下春药玩弄A片| 99热18| 五月天色不卡| 伊人五月天| 麻豆123区| 那里有AV网址| 色一情一乱一乱一区91Av| 视频一区二区在线| 婷婷丁香五月天熟女丝袜| 91蜜桃婷婷狠狠久久综合9色| 色综合九九色综合88| 色噜噜狠狠狠综合曰曰曰| 激情久久久久久久久| 五月丁香婷婷五月色| 丁香五月性| 丁香五月婷婷综合91| 96自拍视频九色在线观看| 久久婷婷六月综合| 天天插天天插| 综合 激情 婷婷| 五月丁香婷婷综合| 国产精品99久久久久久久女警| A片一曲| 色噜噜狠狠色综合日日| 97精品在线| 丁香六月婷婷| 婷婷五月综合激情| 六月丁香婷婷爱| 国产SUV精品一区二区883| 色色色999| 五月丁香激情啪啪| 婷婷99视频在线| 日本熟妇乱妇熟色A片蜜桃| 激情六月婷婷| 美女视频图片久久91| 五月停停大香蕉| 婷婷综合性爱网| 中国丰满熟女A片免费观| 久久性视频| 色噜噜狠狠一区二区三区| 色色五月丁香婷婷| 成人午夜视频精品一区| 99日在线观看视频| 久久久久久久丁香五月天婷婷| 久久婷婷视频| 六月五月婷婷| www.精品99| 欧美 日韩 成人在线| 人人操AV| 五月婷婷色色爱| 久久XX日本综合| www.99操| 婷婷五月天无码熟女| 凹凸7777操操操| 开心激情久久久久久久| 97色永久免费视频| 亚洲蜜桃精久久久久久久久久久久 | 亚洲av电影在线| 99操网站| 精品九九在线观看| 大香蕉久久婷婷| 色婷婷丁香五月| 性爱久久| a九九热www| 亚洲第一色网站| 第四色婷婷色五月| 日本三级中国三级99人妇网站| 日日夜夜干| 日韩人妻在线播放| 国产精品久久99| 噜噜噜精品欧美成人在线观看| 激情六月婷| 色五月成人| 播播网色播播| 99热天堂| 婷婷综合在线| 色吧99| 99操久久| 日日噜噜夜夜狠狠久久丁香五月| 99精品国产在热久久| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 丁香五月天.com| 天天干天天插| 91丨九色丨熟女|新版| 亚洲激情 久久| 26uuu精品一区二区| 五月丁香激情四射| 九九热99在线视频| 婷婷综合网伊人| 97碰啪啪| 92国产福利| 人人做人人看人人摸| 人人97碰| 91丁香五月| 婷婷五月丁香色情| 国产精品色| 婷婷婷久久久| 99色视频| 九艹在线| 色婷婷在线播放| 996re热精品视频| 99热无码精品| 亚洲操操操| 丁香婷婷91在线观看视频| 婷婷五六日| 激情丁香六月| 五月丁香婷中文| 无月播播激情在线观看视频| 热热色色五月天婷婷| 丁香五月激情婷婷视频| 五月婷婷之综合激情| 久热伊人9| 婷婷免费无视频| www.色婷婷.com| 99自拍网| 99热首页| 九九热视频网站| 91精品久久久久| 色www.con| 婷婷五月天BBw| 国产精品A成V人在线播放| 婷婷五月丁香久久| 日本色道视频网站| 日本色婷婷| 91凹凸在线| 五月天堂色色| 超碰二区| 久久66er久久| 色一色综合| 五月丁香亚洲五月| 香蕉色色网| 日日插日日干| 成人网址在线观看| 办公室少妇激情呻吟A片在线观看| 婷婷综合亚洲| 五月丁香啪啪网| 91成人视频| 91成人看片| 亚洲熟妇无码乱子AV电影| 日韩AV免费| 激情五月四色| 色色爽爽天天| 疯狂做受XXXX高潮A片| 99热国产国产| 久青草大香蕉| 丁香五月手机在线| 中文字幕色色| 色三级色三级| 国产精品久久久久久久久久免费| 婷婷五月情天| ww亚洲ww在线观看| 五月婷无码| av狠狠操| 天天爽夜夜爽夜夜爽精品| 天天操天天操天天操天天操天天操| 热的五码久久精品| 国产欧美大香蕉一区| 丁香久久| 小视频aaa久久久| 国产69久久久欧美黑人A片 | 99久久色| 色五月首页| 国产性色蜜乳| 精品久久9| 丁香五月激情五月| 婷婷五月天视频免费在线观看| 色丁香婷婷| 99综合视频| 五月婷婷丁香综合| 亚洲激情免费久久| 久久久五月五丁香| 五月丁香婷婷伊人| 成人综合视频在线| 九色成人AV在线| 色在线99| 99精品免费欧美小视频 | 五月花婷婷丁香| 欧美啪啪五月天| 色激情综合| 开心五月婷婷六月丁香| 啪啪99| 亚洲精品99| 色五月播五月| 丁香五月,激情五月,深爱五月| 性爱激情小说AV五月丁香花| 色欧美一级| 五月婷婷五月天| 秋霞黄色一级久久| 色播婷婷大香蕉| www99精品日韩| 久操福利| 天天做天天爽| 噜噜视频| 五月激情综合美女久久| 五月天成人在线| 成人五月丁香社区| 婷婷激情在线| 国产精品人妻在线网址| www.cao.com久久| 人妻22p| 开心婷婷五月| 夜夜骑夜夜操| 深爱激情丁香| 久久五月天婷婷| 日本成人噜噜噜噜噜| 情色五月天网站| 免费看片操逼| 人人草碰| 亚洲激情精品| 情五月亚洲婷婷| 超碰成人av| 久久婷婷免费| 五月婷婷电影院| 狠狠穞A片一區二區三區| 五月综合丁香婷婷| 外国碰视频网站97| 婷婷综合色| 婷婷六月丁| 精品一区二区三区木瓜| 丁香成人色情五月天| 久久亚洲色导航| site:901-07.com| 久久婷婷激情四射五月天| 久久婷婷伊人| 97啪啪| 五月婷婷啪啪| 色婷五月| 婷婷丁香五月天激情| 五月婷婷偷拍| www.99热| 国产亚洲精品久久久久久豆腐| 久久久久久久久久8888| 国产欧洲欧洲精品久久| 在线理论片| 五月天精品| 操操天堂| 久久综合五月天| 九九伊人网| 久久婷婷啪啪视频| 婷婷中文字幕| 亚洲三A| 国产精产国品一二三在观看| 婷婷狠狠综合网入口| 久婷婷视平| 婷婷综合婷婷| 狠狠五月激情丁香六月| 婷婷五月花丁香| 日本操逼九九九九58日本操逼| 色噜噜狠狠狠综合曰曰曰| 青青草视频福利| 久草xx性爱视频| 久久性爱视频久久性爱视频| 国产精品国产| 国产精产国品一二三在观看| 久久综合55| 中文在线视频久9| AV在线不卡网站| 狠狠色狠狠爱| 久思思久视频| 99热.com| 99热这里有精力| 色色a| 国产精品日本一区二区在线播放| 国产精品成人网址| 伊人婷婷大香蕉| 99re热精品视频国| 丁香五月天论坛| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 五月婷婷在线综合| 五月天综合视频| 99精品偷自拍| 五月天丁香久久| 亚洲人妻av| 99久久精品视频女神1| 亚洲热综合| 91九色国产| 人妻内射一区二区在线视频| 99人人操人人爱久久久| 狠狠干2007| 久色婷婷200| 夜夜爽天天爽| 综合爱久久| 婷婷91| 男人先锋久久| www.五月婷婷.com| 婷婷五月AV| 五月色色网| 日韩在线观看网址| 伍月婷丁香婷| 婷久久| 一二线视频 另类| 婷婷成人AV| 亚洲开心激情网| 久久综合影院| 中文字幕婷婷在线| 亚洲五月天婷婷在线| 色综合com| 丁香五月天堂婷婷| 色综合久久88色综合天天人守婷| 91久久久久久| 亚洲旡码| 婷婷五月在线观看| 成人丁香五月婷| 五月开心啪啪| 久九男女天堂| 丁香婷婷五月天色播| 色五月色图| 丁香六月综合| www,av好吊操| 丁香五月激情图片婷婷| 五月丁香婷婷人体| 青草青草视频2免费观看| 99riAV国产精品视频| 丁香六月天婷婷开心综合| 久久人妻久久| 国产欧美日韩性爱| 天天日夜夜拍| 丁香婷婷综合精品六月初| h在线看免费版在线看| 五月天激情美女久久| 六月丁香花婷婷| 五月天社区| 变天就操逼婷婷五月| 久热这里只有精品99re,久热这里只有精品7 | 五月天四色房丁香亭亭| 五月婷视频在线观看| 狠狠草在线观看| 人人97操| 五月婷婷激情| 9|无码久久久久久| 99热首页| 国产裸舞福利资源在线视频| 欧美激情五月天| 99re这里只有精品99| 久婷婷婷| 狠狠色丁香| 人人97碰| 激情综合自拍五月婷婷色五月| 久久九九爽| 激情五月综合网最新| 日本在线视频www色| 91久久综合亚洲鲁鲁五月天| 婷婷网五月天| 五月香蕉婷婷| 日本97在线看片| 夜丁香综合| 五月天激情日色在线| 亚洲操b| 久久日九九| 狼友超碰| 人妻乱码久久久| 伊人综合网站| 亚洲天天综合| 五月丁香久久网| 99亚州综合精品成人网| www.伊人天堂偷偷婷婷| 亚洲天堂有码| 五月天狠狠| A√天堂网在线| 亚洲深喉aV| 婷婷五月花丁香| 狼人婷婷综合| 午夜天堂一区人妻| 五月婷婷丁香五月| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 久久精品国产色| 无码人妻精品一区二区蜜桃色欲| www.五月天激情| 五月婷婷七月丁香| 色婷婷五月天| 思思热在线视频精品| 欧洲不卡视频| 日本三级日本黄色| 九九色综合| 日操五月婷| 第1影院之五月婷婷| 色99自拍| 97五月天婷婷| eeuss人妻| 伊人狼人干| 六月婷婷久久| 综合五月天婷婷色| 如何安全看伊人婷婷| 亚洲精品无码99热| 九九色色| 五月婷婷在线综合| 天天天天天色| 久99久视频| 久cao香蕉影院| 日本久久人人| 99热亚洲精品| caopeng97日韩| 骚五月婷婷| 成人精品视频99在线观看免费| 色色色色网站| 99热777| 99欧州偷拍视频| aaa久久久| 五月婷色| 色吧婷婷| 婷婷久久丁香| 99九九精品视频| 亚洲Va成人| 色色色色色综合| 天天干天天爽| 很很干天天干| 色婷婷婷婷| 五月婷婷丁香综合网| 久热这里只有精品6官网亚洲| 六月综合婷婷开心伊人| 午夜在线成人网站免费观看| 国产69久久久欧美黑人A片| 婷婷丁香五月麻豆| 2020日日干| 66精品成人免费网站在线观看| 18av天堂| 久久永久网址| 五月天丁香六月综合| 91日韩美女被插视频| 色一色综合| 日日干夜夜干| 天天干天天插| 久久怡红院| 任你艹| 天堂中文国产| 色五月婷婷综合| 五月天婷婷综合| 婷婷丁香综合成人| 五月婷婷婷婷婷| 99精彩视频在线观看| 淫视馆aV二区一区| 精品久久二6| 五月天婷婷久久| 91碰碰视频| 婷婷色操| 色色免费网站| 日韩九九视频| WWW五月婷婷| 五月丁香激情啪啪| 99热永久在线观看| 噜色精品| 丁香婷婷六月在线资源观看| 色婷视频| 日韩av在线免费观看| 亚洲色另类| 色五月AV| 超碰AV在线| 五月丁香天堂网| 日日爽日日| 狠狠色噜噜狠狠狠狠综合| 99这里只有| 久久99热这里只频精品6学生| 五月天色五月| 色色婷婷综合| 大香蕉九九操| 五月婷婷xxx| 夜夜操夜夜爽| 日夜夜久久| 丁香色五月天| 亚洲日日日| 蜜臀AV在线观看| 五月天综合在线网| 亚洲av成人电影在线观看| 五月婷婷草| 激情久久久久| 色婷激情网| 51avj视频大全| 久久五月天网| 国产亚洲精品久久久久久郑州| 国产精产国品一二三在观看| 涩玖玖免费视频| 婷婷五月丁香91| 综合五月草| 蜜乳A√| 久久精品性爱| 99视频只有精品| 欧洲综合一区| 99成人网一区| 欧美一级操逼视频| 日日干夜夜干| 精品九九网| 99热9| 97婷婷丁香五月| 日日操夜夜撸| 欧美性色A片免费免费观看的| 五月天丁香啪啪啪啪| 激情九月综合| 丁香婷在线| 婷婷综合精品| 色婷婷AV久久| wwW天天干| 五月丁香中文| 97精品人人A片免费看| 色婷婷亚洲在线观看| 色色综合成人网| 天天射色五月天| 婷婷基地爱| 超碰99成人在线| 日本激情ⅩXX免费视频| 婷婷五月天天爽| 99热在线观看| 秋霞三级色戒| 超碰二区| 一婬一伦一区二区三区| 九月婷婷丁香| 另类视频在线| 丁香五月婷婷色| 亚洲精品大片| 国产97在线日韩亚洲女人被黑人巨大| 色色色色欧洲| 久久五月激情综合| 婷婷五月a| 欧美黑人巨大猛烈cuckold| 色情丁香五月婷婷精品| 超爽内射| 一级操逼内射在线视频| 国产高清av黄色看片| 99热老网站| 99亚洲精品视频| 成人综合网站| WWW色综合| 97九色| 久草a片| 婷婷五月花西瓜| 欧美性生交A片免费看| 伊人激情| 夜夜谢天天干| 欧美久热| 五月天.com| 色欲影香| 五月丁香色色| 久久婷婷成人| 欧美三级欧美一级| 91超碰人人操| 婷婷综合网| 99自拍视频在线| 99re热在线视频| 色私五月婷婷| 激情婷婷丁香五月天| 99色| 久久性爱视频| 嫩草AV久久伊人妇女超级A| 东京热伊人| 六月婷婷综合| 激情人妻综合| 成人短视频在线| 色五月婷婷影院| 新激情五月天天在线网| 婷婷月综合| 激情亚洲婷婷| 婷婷丁香久久| 1000部毛片A片免费观看| 日本女天天爽| 思思re最新视频| 婷婷六月激情丁香| 色婷婷aV四虎| 激情综合国产| 99国产小视频2013| 强辱丰满人妻HD中文字幕| 成人婷婷五月| 99婷婷色| 日韩成人无码人妻| 六月婷婷之青青草| 97超级碰人人| 99九九玖玖| jiujiu热在线视频| 无码一区精品一区视频| 五月婷婷五月丁香| 色欲天天综合网| 五月婷婷影院| 思思热精品在线观看| 91精产一区三区免费观看| 26UUU欧美激情一区二区| 97人人操人人干| 午夜69成人做爰视频| 色五月婷婷DVD| 日韩高清久久| 色色丁香| 丁香成人五月天| 三级黄网站| 成人美女网| 这里只有精品无码| 激情五月天在线观看色婷婷| 色色色色色日韩午夜激情| 激情久久久久久久久久久| wuyuedingxiang99| www.99热精品99.com| 97人妻碰碰中文无码久热丝袜| 99激情视频热| 丁香五月婷婷综合精品素人| 大学生高潮无套内谢视频| 久久成人人妻| 无码地址| 91凹凸在线| 免费观看欧美成人AA片爱我多深| 精品丁香五月天在线播放| 婷婷激情丁香五月天综合| 丁香五月色激情| 色五月丁香网| 婷婷丁香18| 天天爱天天做天天舔| 色停停五月天| 激情AV| 久热在线观看视频9| 五月丁香偷拍| 无码动漫av| 九九九午夜影院成人| 成人永久免费视频在线观看| 丁香婷婷九月在线| 五月丁香啪啪啪| 色播五月网| www·五月天| 亚洲激情综合网| 狠狠色婷婷色| 99久久超级| 日日夜夜狠狠| 色婷婷久久综合中文久久一本| 五月天另类小说| 五月丁香久久久日婷婷久久婷婷日| 97精品自拍视频| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | www.99在线| 99这里只有精品视频| 丁香五月天激情AV| 99高级会所久久| 91精品婷婷国产综合久久| 激情骚五月| 婷婷五月丁香综合亚洲| 国产成人AV| 久久xxxx| 九九AV| 天天狠狠夜夜狠狠2023| 97色婷婷成人综合在线观看| 色综合天堂| 激情五月婷| 婷婷丁香十月| 成人丁香五月| 可以直接看的av| 亚洲五月色| 婷婷丁香综合成人| 嫩草AV久久伊人妇女超级a| 人妻五月天激情开心网| 人色五月天婷婷| 色爱99| 99极品视频| 六月婷婷之青青草| 激情五月无码| 九九久久综合网站| 五月天色婷婷基地| av中文网站| 婷婷五月花西瓜| 可以观看的AV| 可以免费观看的AV| 91大神操美女| 91丨九色丨大屁股| www色婷婷| 婷婷啪啪| 91午夜婷婷狠狠久久综合9色| 97 天堂| 97午夜一区二区| 一区操| 亚洲色色五月天| 婷婷六月激情| 国产激情综合五月| 五月丁香青草综合啪啪| 玖玖热视频| http:色情日本com| 久久色9| 人人叉久| 99久视频| 99精品视频在线| www,五月丁,com| 婷婷开心激情五月激情网| 六月综合婷婷开心伊人| 九九久久精品| 婷婷五月天激情亚洲小说| 99色免费视频| 97色在线观看视频| 国产成人网址| 九九色中文| 久久婷婷色色| 激情丁香五月激情婷婷| 日韩啊啊啊| 人妻啪啪啪| 大香蕉久久综合网| 久久久久8888| ss99热| 99热精品在线观看| 可以免费观看的av| 狠狠色丁香婷婷| 五月丁香狠狠爱| 色性日本| 91九色网| 日本A片一区| 色色婷| 精品,99| 午夜大香蕉| 天天综合天综合久久网| 精品婷婷| 婷婷五月天成人小说| 99精在线| 亚洲AV另类| 丁香婷婷激情五月色| 色五月天成人| 色五月激情五月| 97人妻碰碰碰久久香蕉| 一级A片天天操夜夜操| 国产免费AV网站| 婷婷五月综合丁香久久| 97色色色色色色色| 噜噜噜久久| 亚洲午夜在线视频| 婷婷激情伍月网| 久久中文网| 久久婷婷五月综合色奶水99啪| 五月丁香六月婷婷中文版| 色欲五月婷婷| 免费观看日韩成人av| 亚洲激情无码久久| 亚洲激情网| 伊人五月婷婷国产视频| 五月婷婷欲色| 国产乱子轮XXX农村| w婷婷五月婷婷w| 亚城区在线| 97在线观视频免费观看| 中海油常州环保涂料有限公司| 五月丁香成人网| 热99玖玖99玖玖99九九| 啄木鸟黑丝一区二区| 婷婷香五月天| 色五月综合在线| 天天色天天| 热99.com婷婷| 亚洲狠狠操| 99网| 激情五月天开心网丁香无码| 涩五月婷婷| 激情五月婷| www婷婷| 91碰免费视频| 天天干天天射综合网| 熟妇人妻中文字幕无码老熟妇| 就要爱综合| 丁香五月性| 色婷婷婷婷| 香蕉狠狠爱视频| 成人中文字幕在线| 亚洲网站999| 色噜久| 久久久噜噜噜久久人妻| 色99视| 天天干电影| 色情五月| 我去色色网五雨天| 日韩99视频| 玖玖爱综合网| 色色色婷婷五月天| 99热这里有精力| 色狠狠五月天| 色五月亚洲| 五月在在观看| 91黄色五月天视频| 丁香婷婷视频| 1024操逼视频| 色婷婷五月综合| 丁香婷婷人妻| 国产做爰视频免费播放| 五月婷婷福利| 玖玖婷婷色| 婷婷久久五月天丁香| 久久99久久99精品免观看粉嫩| 日韩久热| 色婷婷手机在线| 九九热在线视频| 亚洲无码成人性爰网| 五月天福利影院导航| 天天日夜夜帕| 偷拍91九色| 五月丁香啪啪网| 久久99激情| 五月天丁香久久综合 | 亚洲操操| 天干天天干天天天天天| 婷婷在线日韩综合| 婷婷五月天狠狠色| 久久98| 五月婷婷色欲| 五月丁香婷婷深深爱| 丁香六月综合激情| 久久五月婷6 9| 色五月激情五月天| 激情av| 中文字幕丰满孑伦无码专区| 天天色天天色天天色天天色天天色| 六月激情网| 99精品久久| www.热99热| 99碰视频| 欧美美女视频| 五月天激情小说欧美激情| 激情综合五月天| 内射在线CHINESE| 五月天激情图片| 久热视频A.| 精品导航在线x不卡| 99热在线只有精品| 毛片毛片毛片毛片| 婷婷伊人綜合中文字幕小说| 丁香五月婷婷影视先锋| 操人无码| 久播影院免费观看电视剧大全最新网| 99精品国产热久久91色欲| 久久无码成人| 五月天激情四射| 久久这里只| wwW天天干| 色九九九九| 婷婷六月激情综合| 91精品91久久久中77777| 激情五月综合网最新| 五月天婷婷xxx| 亚洲第二AV| 狠狠CAO日日穞夜夜穞AV| 婷婷人人操| 久久视频这里99| 久久99最新| 琪琪色五月天| 91超级碰人人操| 欧美性做爰大片免费看办公室| 五月天综合网| 五月天色婷婷伊人网| 美女亚洲五月丁香| 性爱网五月天| 久久天堂婷婷五月| AⅤ网站在线看| 亚洲午夜av| 婷婷射图| 99激情视频| 青青草原精品久久| 先锋资源 996| 五月丁香婷婷激情在线视频| 丁香五月网址| 欧美久人人| 亚洲影院婷婷色| 人妻日日日| 天天拍天天操| 丁香五月激情五月| 久久婷五月| 欧美久久婷婷| 九色七七| 激情性爱五月| WWW,五月| 狠狠爱五月婷婷| 亚洲另类视频| WWW.婷婷| 中文av网站| 五月丁香综合在线| 国产,欧美,学生妹,视频| 超碰91在线| 91精品国产99久久久久久天美| 亚洲激情五月天| 色播五月| 97精品自拍视频| 婷婷五月天网| 99热碰碰| 亚洲综合草草| 久久性爱视频| 五月婷婷中文字幕| 26uuu国产| 亚洲激情av| 亚洲无码99| A片试看50分钟做受视频| 极品少妇XXXX精品少妇偷拍| 色伊人91在线视频| 97碰碰草| 性爱激情小说AV五月丁香花| 91色在线 | 日韩| 国产激情在线| 五月天色色色| 秋霞午夜理论| 99re思思热这里| 天天日人人爽| 日日操夜夜骑| 九九色欲网| 人妻久久久久久久| 无遮挡国产高潮视频免费观看| 97干干干丁香| 九九热99久久99| 九月激情综合| 婷婷激情五月天7| 99精彩视频在线观看| 可以直接看的AV网站| 四月婷婷丁香五月| 91精品丝袜久久久久久| 99热91| 久久婷婷青青| 日韩高清久久| 五月婷婷新网站| 欧洲综合色| 激情五月天婷婷在线网址发给我| 爆乳熟妇一区二区三区爆乳照片| 精品色色| 操精品9| 99a级片| 天天摸天天舔天天爽| 色五月首页| 丁香五月婷婷超碰在线| 久久er99热精品一区二区| 成人小说色图婷婷五月| 久久网日本| α久久| 婷婷月综合| 免费观看18视频网站| 伊人激情网| 婷婷色女| 丁香婷婷五月天在线视频| 色婷婷婷婷| 婷婷六月丁综合| 丁香色六月| 五月天另类小说| 激情综合网激情五月天| 天天综合网色欲香| 久久这里只有精彩| 色五月激情| 亚洲激情综合| 丁香五月婷婷五月| 538久久| 综合99综合久久久久久久| 国产婷伊人| 天天肏视频| 五月丁香亚洲婷婷| 免费黄色视频网址| 人人操人人干AV| 五月丁香婷婷啪啪综合网| 97色久| www.1024久久| 日本狠狠爽| 五月婷婷色色色| 久久综合香蕉国产国产蜜臀AV| 视频综合网| 日本爆乳片手机在线播放| 中日韩美欧成人一区二区精品在线| 丁香九九九九| 五月丁香婷婷成人网| 国产FREESEXVIDEOS性中国| 久久99网址| 可以观看的AV| 国产精品久久久久9999小说 | 人人播| 91九色视频在线观看| 在线观看玖玖资源免费观看| 99视频只有精品| 色播播婷婷| 久久综合激情婷婷激情| 粉嫩AV久久一区二区三区| 日韩999| 欧美Va婷色| 五月婷婷综合色啪首页 | 丁香六月婷| 91在线人| 五月花亭亭| 亚洲精品无人区| 4399在线观看免费高清电视剧| 久久9视频欧美| 99久久.www| 天天色综合网1| 伊人热在线大香蕉| 久久99热这里| 九九RE视频在线精品| 蜜桃婷婷狠狠久久| 人妻内射视频| 久久九九亚洲| 色色COm| 抽插特写| www.五月丁香av| 中文字幕无码AV| 久久精品小视频| http:色情日本com| 97婷婷丁香五月天激情图片| 99噜噜噜在线播放| 国产伦理精品高清在线观看网站一区二区 | 丁香五月性| 五月综合视频在线| 久久婷婷亚洲| Av性爱网| 做爰丰满少妇1313| 337p午夜影院| 五月天久久色| 17.c黄色| 综合超碰熟| 91超级碰在线| 婷婷激情性爱| 婷香五月激情视频| 六月五月丁香五月欧美| 色综合色综合网| 五月丁香六月婷婷不卡免费无码 | 高潮毛片遮挡费高一百度| 九九性视频| 午夜九九电影| 99天天操夜夜操| 五月天另类小说| 99热加勒比| 狠狠色婷婷777| 伍月婷丁香婷| 人人爽网| 思思久久99| 另类综合激情| 天天操综合网| 五月婷婷影视| 九九综合图片网| 亚洲综合色色| 99热视| Www.Av网9| 一区二区免费看| 婷婷六月丁香开心深深爱| 男女啪啪做爰高潮无遮挡| 亚洲色婷婷视频| 婷婷五月精品中文字幕| 婷婷丁香五月亚洲| 五月丁香六月激情网| 墨西哥毛片内射精| 99ri国产| 26uuuu精品一区二区| 91人人爽人人操| 九月婷婷久久久| caopeng97日韩| 六月婷婷视频| 香蕉婷婷| 亚洲狠狠干| 69热在线| 极品嫩草| 99精品在线观看| 色小说五月婷婷| 亚洲有码在线视频| 色婷婷av在线观看| 五月丁香婷婷成人网| 99热伊人| 欧美日韩一区二区三区四区| 天天射综合网站| 热久久视频99| 男人天堂99| 爱iii做iiii日| 婷婷五月天综合网| 日本欧美国产| 狠狠色婷婷7777久| 久9热插入| 九九激情| 狠狠色综合网| 色五月婷婷五月久久| 激情啪啪五月| 五月婷婷香蕉| 激情五月婷婷五月| 激情五月天影院| 色欲香综合网| 亚洲成人在线免费| 久久丁香婷婷色情综合| 人人爱国产| 激情都市丁香婷婷| 欧美另类五月激情| 婷婷久久五月天| 免费在线a| 91 欧美| 亚洲最大视频| 丁香五月六月婷婷综合| 亚洲另类久久| 99热欧美在线观看| 五月婷婷,狠狠操| 97色精品视频| 婷婷爱五月| 天堂A∨在线| 人人干人人看| 亚洲噜色| 色五月激情五月丁香五月婷婷啪啪综合| 丁香五月激情综合婷综| 真实的国产乱XXXX在线91| 久久99视频| 亚洲午夜AV| 天天综合久久| 婷婷王月天影院| 五月综合激情综合久| 色婷婷婷av| 婷婷五月天黄色| 婷婷爱五月| 色五月色五天色情网址| av一级棒av| 另类少妇人与禽zOZZ0性伦| 五月丁香天堂网| AV在线免费网站| 五月天伊人| 色五月婷婷亚洲| 五月婷婷激情四月| 开心五月丁香婷婷| 欧美婷婷五月激情| 丁香五月激情天AV无码| 玖玖国产视频一区| 99碰超| 亚洲成人在线免费| 亚洲综合婷婷五月| 亚洲午夜视频| 99 re视频一区| 久久九九中文字幕| 欧美三级黄色片久久| 91热视频色网站| 日本婷婷在线| 日本高清久| 激情综合五| 丁香综合网| 桃色五月婷婷| 欧美五月丁香在线| 96人人操人人操人人| 开心久久xxx色| 99热精品在线播放观看| 26uuu美女三级视频| 久久久久久久久久久久久久人妻视频| site:901-07.com| 婷婷爱综合| 天天草天天爱| 久热最新视频| 丁香九月婷婷色| 噜噜色com| 丁香婷婷六月男男| 婷婷婷久久久| 午夜天堂啪啪| 97婷婷色| 国精产品一区一区三区免费视频| 免费看欧美成人A片无码| 江苏少妇性BBB搡BBB爽爽爽| 依人大香蕉在钱1| 月色色综合婷婷网| 亚洲黄色精品| 婷婷丁香五月av| 五月丁香欧美综合免费视频| 色久五月天| 国产精品视频| 激情五月天社区| 99色爱| 在线伦子99热| 欧美日韩一a.无| 亚洲综合色丁香婷婷六月| www夜夜操com| 操碰99| 无码人妻精品一区二区蜜桃色欲| 日韩久久系列| 9l视频自拍9l九色9l成人| 看黄的网站18禁| 思思久日精品视频| 99狠狠色| 国产成人精品一区二三区熟女在线| 亚洲乱码日产精品BD| 九九精品少妇| 丁香婷婷人妻| 五月 婷婷 成人| 色色婷婷丁香| 深夜婷婷 丁香| 婷婷伊人75| 日韩狠狠色婷婷| 中文AV网站| 日本天天色| 国产操逼视频网站| 欧美天天草人人草| 日日爱699| 国产精品大香蕉| 五月天婷婷偷拍| 综合大香蕉| 996热re视频精品视频这里| 亚洲AV综合网| Www.sesese丁香| 国产操碰| 色丁香婷婷| 99精品性爱| 久久伊人婷| 99 频99热国里只有精品| 天天日天天摸| 欧美丰满熟妇BBB久久久| 五月天激情网址| 森林影视大全,最好看的2019年视频 | 九月婷婷人人操人人舔人人爱| 操久久网| 色综合激情| 中文字幕人妻熟女在线| 婷婷九月亚洲| www.ppypp| 九九色逼| 大香蕉婷婷五月| 九九视频这里只有精彩| 99热自拍| 亭亭色网| 亚洲天堂aaa| 国产人妻人伦精品一区二区| 日本成人综合| 色色综合网络| 香蕉AV777XXX色综合一区| 色一情一乱一乱一区91Av| 色综合色色色| 丁香五月婷婷激情四射深爱激情| wwwss在线观看| 日本九九网| 91在线人| xxx日本东京热| 人人操av| 大香蕉婷婷丁香视频在线| 五月开心色| 久久婷五月综合色| AV在线观看网站| 激情五月天情色| 婷婷开心综合人妻小说网址| 91综合在线| 一区二区免费看| 五月婷婷婷| 伊人大香蕉爱聚| 大狠狠在线| 中字幕视频在线永久在线观看免费| 久久精品9| www.99精品在线| 91xxxx九色| 婷婷日日夜夜| 99在线资源视频| 蜜乳国产网站| 天天肏在线| 日日爽日日操| 夜夜操狠狠操| 婷婷欧美色| 天天插天天插| 天天插天天插天天日| 日日操天天操| 九九国产精视频| 亚洲九九视频| 欧洲永久精品| 99热在线观看| 五月天婷婷一起草| 丁香五月自拍| 丁香五月天信号| 久久98| 九月婷婷综合八月丁香在线观看| 日本人妻A片成人免费看片| 天天肏屄夜夜爽| 久久怡红院| 五月天欧美 另类小说| 青青草国产亚洲精品久久| 丁香五月aV| 丁香花社区av| 丁香涩涩爱| 老妇操B| 九九色图| 99热这里只有精品在线免费|