久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

煤炭數(shù)據(jù)采集精進(jìn)指南:從爬蟲(chóng)腳本到工程化系統(tǒng)

煤炭數(shù)據(jù)采集精進(jìn)指南:從爬蟲(chóng)腳本到工程化系統(tǒng) 最近幫某大宗商品研究團(tuán)隊(duì)重構(gòu)了煤炭數(shù)據(jù)采集流程爬取金投網(wǎng)上的煤炭?jī)r(jià)格、庫(kù)存、運(yùn)價(jià)指數(shù)等內(nèi)容。這個(gè)項(xiàng)目的難點(diǎn)不在“能不能爬到”而在“怎么長(zhǎng)期穩(wěn)定地爬到”以及“爬下來(lái)的數(shù)據(jù)能不能直接用”。如果你只是臨時(shí)抓一次數(shù)據(jù)做分析那隨便寫(xiě)個(gè)腳本就夠了但如果你的下游是日?qǐng)?bào)、周報(bào)、月度復(fù)盤(pán)甚至是自動(dòng)化的數(shù)據(jù)推送服務(wù)那這套邏輯就要重新設(shè)計(jì)。這個(gè)“精進(jìn)版”項(xiàng)目就是想解決三件事一是把單次爬蟲(chóng)變成可持續(xù)運(yùn)行的采集任務(wù)二是讓采集到的臟數(shù)據(jù)在入庫(kù)前就被清洗干凈三是在數(shù)據(jù)源反爬策略調(diào)整、字段結(jié)構(gòu)變化時(shí)系統(tǒng)能快速適應(yīng)而不是原地崩潰。下面我把整個(gè)項(xiàng)目的設(shè)計(jì)思路、關(guān)鍵代碼和踩坑經(jīng)歷都拆開(kāi)來(lái)講適合已經(jīng)寫(xiě)過(guò)簡(jiǎn)單爬蟲(chóng)、想往工程化方向走的開(kāi)發(fā)者參考。1. 精進(jìn)版要解決的核心問(wèn)題從單頁(yè)抓取到全鏈路采集1.1 為什么是煤炭行情數(shù)據(jù)煤炭行業(yè)的數(shù)據(jù)有一個(gè)特點(diǎn)公開(kāi)渠道多、口徑不統(tǒng)一、更新節(jié)奏差異大。金投網(wǎng)這類(lèi)行情站點(diǎn)把動(dòng)力煤、焦煤、焦炭等品種的現(xiàn)貨報(bào)價(jià)、期貨價(jià)格、港口庫(kù)存、海運(yùn)運(yùn)價(jià)指數(shù)聚合到一起頁(yè)面結(jié)構(gòu)清晰很適合做數(shù)據(jù)源。但這些數(shù)據(jù)的價(jià)值在于“連續(xù)觀測(cè)”斷一天數(shù)據(jù)趨勢(shì)分析就出現(xiàn)缺口。團(tuán)隊(duì)需要的不是某一天的靜態(tài)快照而是每天定時(shí)、自動(dòng)、完整地采集并和前一天的數(shù)據(jù)做增量對(duì)比。這決定了項(xiàng)目不能是一個(gè)一次性的requests腳本而是一個(gè)帶有調(diào)度、存儲(chǔ)、校驗(yàn)、告警的小型系統(tǒng)。1.2 精進(jìn)版與基礎(chǔ)版的差異很多人寫(xiě)爬蟲(chóng)時(shí)習(xí)慣把“下載頁(yè)面、解析字段、打印結(jié)果”三步寫(xiě)在同一個(gè)文件里跑完就算結(jié)束?;A(chǔ)版能應(yīng)付單次任務(wù)但一旦涉及長(zhǎng)期運(yùn)行會(huì)暴露出一堆問(wèn)題沒(méi)有重試機(jī)制網(wǎng)絡(luò)抖動(dòng)一次當(dāng)天數(shù)據(jù)就缺失沒(méi)有去重邏輯重復(fù)抓取導(dǎo)致庫(kù)里出現(xiàn)大量重復(fù)記錄沒(méi)有頻率控制短時(shí)間高頻請(qǐng)求容易被數(shù)據(jù)源限制訪問(wèn)沒(méi)有字段校驗(yàn)解析到空值、錯(cuò)位數(shù)據(jù)時(shí)代碼不報(bào)錯(cuò)但數(shù)據(jù)已經(jīng)污染了沒(méi)有運(yùn)行日志出了問(wèn)題都不知道是哪個(gè)環(huán)節(jié)出的問(wèn)題精進(jìn)版的核心工作就是把這些“基礎(chǔ)版沒(méi)考慮的事”全部補(bǔ)上。整體架構(gòu)可以拆成四層調(diào)度層、下載層、解析層、存儲(chǔ)層。每層只干自己那一件事層與層之間通過(guò)任務(wù)隊(duì)列解耦這樣任何一層出問(wèn)題時(shí)都可以單獨(dú)替換不至于牽一發(fā)動(dòng)全身。2. 數(shù)據(jù)源分析與請(qǐng)求策略先搞清對(duì)手再動(dòng)手2.1 頁(yè)面結(jié)構(gòu)與數(shù)據(jù)加載方式動(dòng)手寫(xiě)代碼之前先花一天時(shí)間把數(shù)據(jù)源的頁(yè)面結(jié)構(gòu)摸清楚。煤炭行情頁(yè)面一般分兩類(lèi)一類(lèi)是服務(wù)端直接渲染的靜態(tài)表格HTML里就帶全部數(shù)據(jù)另一類(lèi)是前端通過(guò)接口異步加載頁(yè)面上的數(shù)據(jù)是JavaScript跑出來(lái)的。兩種方式的采集策略完全不同。金投網(wǎng)的煤炭板塊大部分是服務(wù)端渲染一個(gè)列表頁(yè)對(duì)應(yīng)一個(gè)URL參數(shù)里帶品種、日期、頁(yè)碼。這種結(jié)構(gòu)的優(yōu)點(diǎn)是不需要模擬瀏覽器一個(gè)帶正確請(qǐng)求頭的requests就能拿到完整HTML缺點(diǎn)是一旦網(wǎng)站改版表格列的順序變了解析邏輯就要跟著改。我的建議是第一次接觸一個(gè)新數(shù)據(jù)源時(shí)先手動(dòng)用瀏覽器打開(kāi)頁(yè)面查看源代碼確認(rèn)數(shù)據(jù)是直接寫(xiě)在HTML里還是通過(guò)接口返回的。如果是接口返回的去Network面板里找真正的數(shù)據(jù)接口解析JSON比解析HTML穩(wěn)得多。這一步?jīng)Q定了后續(xù)所有代碼的寫(xiě)法值得多花時(shí)間。2.2 請(qǐng)求頭與訪問(wèn)頻率設(shè)計(jì)爬蟲(chóng)被限制訪問(wèn)多數(shù)時(shí)候不是因?yàn)槟恪芭懒恕倍且驗(yàn)槟恪芭赖锰癯绦蛄恕薄DJ(rèn)的Python-requests UA一眼就會(huì)被識(shí)別所以請(qǐng)求頭至少需要偽裝成常用瀏覽器的樣子。我維護(hù)了一個(gè)UA池每次請(qǐng)求隨機(jī)取一個(gè)比固定UA更自然import random USER_AGENTS [ Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/121.0 Firefox/121.0, ] def random_headers(): return { User-Agent: random.choice(USER_AGENTS), Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8, Accept-Language: zh-CN,zh;q0.9,en;q0.8, Referer: https://www.gold678.com/, Connection: keep-alive, }再說(shuō)頻率控制。很多新手踩過(guò)的坑是用線程池一口氣發(fā)50個(gè)請(qǐng)求數(shù)據(jù)源還沒(méi)反應(yīng)過(guò)來(lái)就觸發(fā)了風(fēng)控。精進(jìn)版的下載器引入了一個(gè)信號(hào)量把并發(fā)數(shù)控制在合理范圍內(nèi)同時(shí)每次請(qǐng)求之間加一個(gè)隨機(jī)小延遲import threading import time SEMAPHORE threading.Semaphore(5) # 最多5個(gè)并發(fā) def throttled_request(session, url, delay_range(1, 3)): with SEMAPHORE: time.sleep(random.uniform(*delay_range)) resp session.get(url, headersrandom_headers(), timeout15) resp.raise_for_status() return resp這里有個(gè)細(xì)節(jié)信號(hào)量放在請(qǐng)求之前而不是請(qǐng)求之后是為了防止并發(fā)請(qǐng)求同時(shí)卡在timeout等待上時(shí)新請(qǐng)求仍然涌入。實(shí)測(cè)下來(lái)5并發(fā)、1到3秒隨機(jī)延遲的組合對(duì)于數(shù)據(jù)量不大的行情頁(yè)來(lái)說(shuō)足夠穩(wěn)定既不會(huì)觸發(fā)風(fēng)控也完全能滿(mǎn)足每日采集的時(shí)效要求。2.3 代理策略的取舍關(guān)于代理很多人一上來(lái)就想上代理池覺(jué)得這樣才“高級(jí)”。實(shí)際做行情數(shù)據(jù)采集時(shí)代理不是必需品。因?yàn)檫@種公開(kāi)行情頁(yè)面本身價(jià)值密度不算高數(shù)據(jù)源對(duì)單IP的請(qǐng)求頻率限制通常不會(huì)特別苛刻只要頻率控制得當(dāng)一個(gè)干凈的住宅IP就夠了。但有兩類(lèi)情況確實(shí)需要代理一是數(shù)據(jù)源對(duì)單IP的日請(qǐng)求次數(shù)做了硬上限比如一天只放行1000次請(qǐng)求你的采集任務(wù)超過(guò)這個(gè)量就必須換IP二是你采集的目標(biāo)數(shù)據(jù)覆蓋多個(gè)站點(diǎn)主IP因?yàn)槠渌军c(diǎn)的原因被連坐限制。我現(xiàn)在這套系統(tǒng)預(yù)留了代理接口但默認(rèn)走直連只有出現(xiàn)HTTP 403或429時(shí)才動(dòng)態(tài)切換到備用代理。這個(gè)“按需啟用”的思路可以避免大部分時(shí)候都背著代理的額外延遲和失敗率。3. 抓取流程的分層設(shè)計(jì)調(diào)度、下載、解析、存儲(chǔ)3.1 任務(wù)調(diào)度層增量更新與全量補(bǔ)采調(diào)度層是整個(gè)系統(tǒng)的“指揮中心”負(fù)責(zé)決定“什么時(shí)間抓什么頁(yè)面”。煤炭數(shù)據(jù)的更新節(jié)奏基本是工作日每日更新個(gè)別品種甚至是一周更新一次。設(shè)計(jì)調(diào)度時(shí)不能只寫(xiě)死一個(gè)cron表達(dá)式因?yàn)橹苣⒐?jié)假日數(shù)據(jù)源可能不更新而每天需要抓的頁(yè)面數(shù)量又會(huì)隨品種數(shù)量變化。我采用一個(gè)最簡(jiǎn)單的方案維護(hù)一份抓取任務(wù)清單每條任務(wù)記錄包含任務(wù)類(lèi)型、URL模板、參數(shù)列表。調(diào)度器每天定時(shí)掃描任務(wù)清單哪些任務(wù)該在今天執(zhí)行就動(dòng)態(tài)生成具體的抓取URL去下載層排隊(duì)。這樣加一個(gè)新品種只需要往任務(wù)清單里加一行記錄不用改代碼。增量更新的邏輯是默認(rèn)每天抓取當(dāng)日數(shù)據(jù)如果發(fā)現(xiàn)當(dāng)日數(shù)據(jù)為空或者數(shù)據(jù)源返回了“暫無(wú)數(shù)據(jù)”的提示就自動(dòng)回退到前一個(gè)工作日進(jìn)行補(bǔ)采。補(bǔ)采的深度最多回退5個(gè)工作日超過(guò)這個(gè)深度就觸發(fā)告警讓負(fù)責(zé)人決定是否要手動(dòng)核查數(shù)據(jù)源是不是改版了。3.2 下載層請(qǐng)求重試、超時(shí)控制下載層負(fù)責(zé)“把頁(yè)面拿到手”但它真正的難點(diǎn)不是請(qǐng)求本身而是怎么處理異常。網(wǎng)絡(luò)抖動(dòng)、數(shù)據(jù)源臨時(shí)故障、偶發(fā)的429限流這些都是正?,F(xiàn)象。我的下載器對(duì)所有請(qǐng)求做兩層重試第一層是網(wǎng)絡(luò)異常重試比如連接超時(shí)、ReadTimeout、ConnectionError這類(lèi)錯(cuò)誤通常過(guò)幾秒就能恢復(fù)第二層是HTTP狀態(tài)碼重試遇到502、503、504這類(lèi)服務(wù)器臨時(shí)錯(cuò)誤時(shí)退避一段時(shí)間后再試。重試必須配合退避策略否則就是變相給數(shù)據(jù)源制造壓力。我用的是一種指數(shù)退避加隨機(jī)抖動(dòng)的方式def fetch_with_retry(session, url, retries3): for attempt in range(retries): try: resp throttled_request(session, url) if resp.status_code 200: return resp.text elif resp.status_code in (403, 429): raise RateLimitError(fHTTP {resp.status_code}) else: raise HTTPError(fUnexpected status: {resp.status_code}) except (RateLimitError, HTTPError, requests.RequestException) as e: wait_time (2 ** attempt) random.uniform(0, 1) time.sleep(wait_time) return None這里有個(gè)容易被忽略的點(diǎn)重試時(shí)不要直接復(fù)用同一個(gè)Session因?yàn)橛行┻B接已經(jīng)被數(shù)據(jù)源標(biāo)記了異常狀態(tài)。我在重試邏輯里每次都會(huì)新建Session連接雖然多了一點(diǎn)握手開(kāi)銷(xiāo)但成功率明顯提升。對(duì)于每日幾百個(gè)頁(yè)面的采集量這點(diǎn)開(kāi)銷(xiāo)完全可以接受。3.3 解析層表格解析與字段校驗(yàn)解析層是把HTML轉(zhuǎn)成結(jié)構(gòu)化數(shù)據(jù)的關(guān)鍵環(huán)節(jié)。煤炭行情頁(yè)面大量使用表格而表格解析最怕的是“列錯(cuò)位”。數(shù)據(jù)源偶爾會(huì)把某些列合并、隱藏或者在表頭新增一列直接按固定索引取值就會(huì)出錯(cuò)。我用Python的BeautifulSoup加lxml解析器來(lái)處理同時(shí)維護(hù)一個(gè)“表頭到字段名”的映射表。解析時(shí)先確認(rèn)頁(yè)面的表頭順序再按表頭映射到內(nèi)部字段而不是寫(xiě)死第幾列代表價(jià)格from bs4 import BeautifulSoup FIELD_MAP { 日期: date, 品種: variety, 價(jià)格: price, 漲跌: change, 漲跌幅: change_pct, 單位: unit, } def parse_price_table(html): soup BeautifulSoup(html, lxml) table soup.find(table) header_row table.find(tr) headers [th.get_text(stripTrue) for th in header_row.find_all([th, td])] rows [] for tr in table.find_all(tr)[1:]: cells [td.get_text(stripTrue) for td in tr.find_all(td)] row {} for idx, header in enumerate(headers): if header in FIELD_MAP and idx len(cells): row[FIELD_MAP[header]] cells[idx] rows.append(row) return rows解析之后不能直接入庫(kù)要先做字段校驗(yàn)。我加了三個(gè)維度的檢查空值檢查核心字段日期、品種、價(jià)格為空時(shí)該行標(biāo)記為異常不寫(xiě)入正式表類(lèi)型檢查價(jià)格字段必須是數(shù)值型遇到“暫無(wú)”“--”這類(lèi)非數(shù)值內(nèi)容轉(zhuǎn)換為空值并記錄日志范圍檢查煤炭?jī)r(jià)格不可能一夜之間從500漲到5000所以每個(gè)品種都配置了合理的波動(dòng)范圍超出范圍的數(shù)值會(huì)被標(biāo)記為可疑數(shù)據(jù)進(jìn)入人工復(fù)核隊(duì)列這三個(gè)檢查的價(jià)格在于它們不是“防止爬蟲(chóng)出錯(cuò)”而是“防止臟數(shù)據(jù)污染下游”。下游分析師拿到的數(shù)據(jù)必須是干凈的否則一個(gè)小數(shù)點(diǎn)錯(cuò)誤就可能讓一份研報(bào)的結(jié)論全錯(cuò)。3.4 存儲(chǔ)層去重策略與庫(kù)表設(shè)計(jì)存儲(chǔ)層我選擇MySQL主要是為了后續(xù)對(duì)接BI工具和定時(shí)報(bào)表方便。表結(jié)構(gòu)的設(shè)計(jì)要考慮到“同一品種同一日期只能有一條記錄”所以建表時(shí)直接加唯一索引CREATE TABLE coal_daily_price ( id INT AUTO_INCREMENT PRIMARY KEY, variety VARCHAR(32) NOT NULL, trade_date DATE NOT NULL, price DECIMAL(10,2), change_value DECIMAL(10,2), change_pct DECIMAL(5,2), unit VARCHAR(16), source VARCHAR(64), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_variety_date (variety, trade_date) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;入庫(kù)時(shí)用INSERT ... ON DUPLICATE KEY UPDATE而不是先查再插這樣既保證冪等性又省掉一次查詢(xún)def upsert_rows(cursor, rows): sql INSERT INTO coal_daily_price (variety, trade_date, price, change_value, change_pct, unit, source) VALUES (%(variety)s, %(trade_date)s, %(price)s, %(change_value)s, %(change_pct)s, %(unit)s, %(source)s) ON DUPLICATE KEY UPDATE price VALUES(price), change_value VALUES(change_value), change_pct VALUES(change_pct), unit VALUES(unit), source VALUES(source) for row in rows: cursor.execute(sql, row)其實(shí)這里有一個(gè)設(shè)計(jì)上的取舍值得說(shuō)說(shuō)為什么用唯一索引做冪等而不是先DELETE再I(mǎi)NSERT因?yàn)橄葎h后插在數(shù)據(jù)源當(dāng)天數(shù)據(jù)延遲更新時(shí)會(huì)導(dǎo)致歷史記錄被清空而我們希望保留“數(shù)據(jù)源最后一次更新”的狀態(tài)。用唯一索引加覆蓋寫(xiě)的方式可以保證每天都只保留最新?tīng)顟B(tài)同時(shí)磁盤(pán)上不會(huì)堆積大量重復(fù)記錄。4. 核心代碼實(shí)現(xiàn)調(diào)度、解析與入庫(kù)的關(guān)鍵片段4.1 定時(shí)調(diào)度與任務(wù)清單調(diào)度器用APScheduler實(shí)現(xiàn)每天上午9點(diǎn)半和下午5點(diǎn)各觸發(fā)一次任務(wù)掃描。為什么要兩個(gè)時(shí)間點(diǎn)因?yàn)槊禾楷F(xiàn)貨報(bào)價(jià)有的品種上午出有的品種下午才更新分兩個(gè)批次可以減少“抓不到數(shù)據(jù)”的概率。任務(wù)清單我直接放在了數(shù)據(jù)庫(kù)里這樣加任務(wù)不用改代碼SELECT task_name, url_template, params_json, schedule_type FROM crawl_task_config WHERE is_active 1 AND next_run_time NOW() OR next_run_time IS NULL每次調(diào)度觸發(fā)時(shí)系統(tǒng)掃描所有需要執(zhí)行的任務(wù)生成具體的URL列表然后交給下載層去異步抓取。抓取完成后無(wú)論成功還是失敗每條任務(wù)都會(huì)記錄下一次執(zhí)行時(shí)間同時(shí)更新成功次數(shù)和失敗次數(shù)的統(tǒng)計(jì)。如果某個(gè)任務(wù)連續(xù)失敗超過(guò)3天調(diào)度器會(huì)把它標(biāo)記為“異?!睍和:罄m(xù)自動(dòng)執(zhí)行并把異常信息推送到告警群。4.2 字段清洗與多表關(guān)聯(lián)解析出來(lái)的原始字段經(jīng)常不能直接用比如“價(jià)格”字段在頁(yè)面上顯示成“現(xiàn)價(jià) 780 元/噸”或者日期顯示成“01-20”而不是完整的“2025-01-20”。我寫(xiě)了一個(gè)清洗模塊專(zhuān)門(mén)做三件事提取數(shù)值、標(biāo)準(zhǔn)化日期、統(tǒng)一單位。數(shù)值提取用正則表達(dá)式解決import re def extract_number(text): if not text: return None match re.search(r-?\d(\.\d)?, text.replace(,, )) if match: return float(match.group()) return None日期標(biāo)準(zhǔn)化要考慮兩種格式一種是帶年份的完整日期另一種是只有月和日的簡(jiǎn)稱(chēng)。對(duì)于后者需要根據(jù)當(dāng)前日期推斷年份同時(shí)處理“跨年”邊界問(wèn)題比如12月31日的簡(jiǎn)稱(chēng)日期到了1月1日年份應(yīng)該還是上一年from datetime import datetime, timedelta def normalize_date(text, todayNone): today today or datetime.now().date() cleaned text.strip() try: return datetime.strptime(cleaned, %Y-%m-%d).date() except ValueError: pass try: m, d cleaned.split(-) candidate datetime(today.year, int(m), int(d)).date() if candidate - today timedelta(days90): candidate datetime(today.year - 1, int(m), int(d)).date() return candidate except ValueError: return None這個(gè)“跨年推斷”的邏輯其實(shí)是個(gè)很容易踩的坑。如果你不考慮跨年每年1月初你會(huì)發(fā)現(xiàn)系統(tǒng)里突然出現(xiàn)一批日期錯(cuò)誤的數(shù)據(jù)而且這種錯(cuò)很難被普通校驗(yàn)發(fā)現(xiàn)因?yàn)槿掌诟袷奖旧硎呛戏ǖ摹?.3 多線程下載與入庫(kù)性能下載和解析可以做到并行但入庫(kù)必須串行因?yàn)镸ySQL不支持多線程同時(shí)寫(xiě)同一張表還能保證唯一索引不出沖突。我的做法是下載和解析用ThreadPoolExecutor并行處理解析結(jié)果放進(jìn)一個(gè)內(nèi)存隊(duì)列再單獨(dú)開(kāi)一個(gè)線程從隊(duì)列里批量取數(shù)據(jù)、批量入庫(kù)。批量入庫(kù)的批次大小我調(diào)到500條一批實(shí)測(cè)比一條一條插快了近10倍。對(duì)于煤炭數(shù)據(jù)這個(gè)量級(jí)500條一批完全不會(huì)給數(shù)據(jù)庫(kù)帶來(lái)壓力。5. 踩坑實(shí)錄與排查鏈路從403到臟數(shù)據(jù)的完整復(fù)盤(pán)5.1 偶發(fā)403從User-Agent到IP限流系統(tǒng)上線第三周的某天運(yùn)維反饋當(dāng)天的采集任務(wù)成功率為0所有請(qǐng)求都返回403。我第一反應(yīng)是UA被識(shí)別了于是趕緊換了新的UA池結(jié)果仍然403。接著查了代理IP的可用性也正常。最后打開(kāi)數(shù)據(jù)源頁(yè)面才發(fā)現(xiàn)是數(shù)據(jù)源整體升級(jí)了防護(hù)策略對(duì)所有非瀏覽器請(qǐng)求都返回403連正常訪問(wèn)偶爾也會(huì)要求驗(yàn)證。這個(gè)問(wèn)題的排查鏈路是這樣的先看HTTP狀態(tài)碼分布確認(rèn)是全部失敗還是部分失敗如果是全部失敗考慮是不是IP被全局封禁排除IP因素后再看是不是UA、Cookie這些請(qǐng)求頭出了問(wèn)題。最終解決方式是增加了Cookie的自動(dòng)獲取流程也就是先訪問(wèn)一次首頁(yè)拿到必要的Cookie再帶著去訪問(wèn)數(shù)據(jù)頁(yè)模擬真實(shí)用戶(hù)的訪問(wèn)路徑。這比單純偽造UA要有效得多。5.2 請(qǐng)求頻率被限制并發(fā)不是越高越好另一個(gè)印象深刻的坑是我把并發(fā)從5調(diào)到10之后原本跑得好好的任務(wù)突然開(kāi)始大面積超時(shí)。查下來(lái)發(fā)現(xiàn)數(shù)據(jù)源對(duì)單IP的并發(fā)連接數(shù)做了限制超過(guò)之后新的連接會(huì)被掛起直到超時(shí)。這個(gè)問(wèn)題的本質(zhì)是“系統(tǒng)設(shè)計(jì)時(shí)沒(méi)有考慮目標(biāo)服務(wù)器的承受能力”。數(shù)據(jù)源本身只是一個(gè)普通網(wǎng)站不是為你準(zhǔn)備的高并發(fā)API服務(wù)你用太高的并發(fā)去訪問(wèn)人家第一反應(yīng)不是“服務(wù)好你”而是“這個(gè)IP有問(wèn)題”。最終我把并發(fā)調(diào)回5并且在代碼里加了自適應(yīng)限速每次收到429或503時(shí)自動(dòng)把并發(fā)數(shù)減半等一段時(shí)間后再逐步恢復(fù)。這個(gè)機(jī)制上線后再也沒(méi)有出現(xiàn)過(guò)全鏈路超時(shí)的情況。5.3 臟數(shù)據(jù)的隱蔽風(fēng)險(xiǎn)類(lèi)型正確但邏輯錯(cuò)誤最坑的數(shù)據(jù)錯(cuò)誤不是格式錯(cuò)誤而是“看起來(lái)完全正常、但邏輯上不可能”的數(shù)據(jù)。有一次動(dòng)力煤價(jià)格在庫(kù)里連續(xù)三天都是600元/噸不變而數(shù)據(jù)源頁(yè)面上每天數(shù)值都有變化。排查發(fā)現(xiàn)解析器把表格中的一列錯(cuò)位了取到的是“昨日結(jié)算”而不是“今日價(jià)格”而恰好那幾天“昨日結(jié)算”的數(shù)值都是一樣的所以入庫(kù)后看起來(lái)像“數(shù)據(jù)沒(méi)更新”。這種問(wèn)題最容易被忽略因?yàn)閿?shù)據(jù)校驗(yàn)時(shí)類(lèi)型、范圍都沒(méi)問(wèn)題。從那以后我加了一道專(zhuān)門(mén)的“環(huán)比校驗(yàn)”每個(gè)品種每日的價(jià)格與前一天做對(duì)比如果變化率超過(guò)設(shè)定閾值系統(tǒng)自動(dòng)把這條記錄標(biāo)為“待復(fù)核”而不是直接覆蓋前一日的記錄。這個(gè)機(jī)制幫我抓住了好幾次數(shù)據(jù)解析錯(cuò)位的問(wèn)題。6. 上線后的運(yùn)維細(xì)節(jié)與擴(kuò)展思路6.1 日志、監(jiān)控與告警爬蟲(chóng)系統(tǒng)的運(yùn)維核心不是“跑通”而是“可觀測(cè)”。我規(guī)定所有關(guān)鍵節(jié)點(diǎn)必須打結(jié)構(gòu)化日志包括請(qǐng)求開(kāi)始時(shí)間、請(qǐng)求結(jié)束時(shí)間、狀態(tài)碼、解析行數(shù)、入庫(kù)條數(shù)、耗時(shí)。這些日志統(tǒng)一寫(xiě)入日志文件同時(shí)按天切割方便檢索。監(jiān)控分兩層一層是基礎(chǔ)設(shè)施監(jiān)控比如任務(wù)是否在跑、進(jìn)程是否存活另一層是業(yè)務(wù)監(jiān)控比如當(dāng)天采集成功率、解析行數(shù)是否與前一天有明顯波動(dòng)。我設(shè)置了兩個(gè)告警級(jí)別單任務(wù)失敗不告警只記日志連續(xù)失敗超過(guò)3次或成功率低于80%才會(huì)推送告警消息。這里有個(gè)經(jīng)驗(yàn)告警閾值要留有余地不要一點(diǎn)小波動(dòng)就告警否則團(tuán)隊(duì)會(huì)進(jìn)入“狼來(lái)了”狀態(tài)最后真的出問(wèn)題時(shí)沒(méi)人響應(yīng)。6.2 失敗回補(bǔ)機(jī)制無(wú)論系統(tǒng)多穩(wěn)定總有那么幾天數(shù)據(jù)源不配合。我把“失敗任務(wù)重跑”做成了一個(gè)獨(dú)立的操作入口只要數(shù)據(jù)源恢復(fù)正常負(fù)責(zé)人手動(dòng)觸發(fā)一次回補(bǔ)任務(wù)系統(tǒng)就會(huì)根據(jù)任務(wù)清單里記錄的最后成功日期自動(dòng)補(bǔ)齊所有缺失的數(shù)據(jù)?;匮a(bǔ)任務(wù)復(fù)用正常的下載、解析、入庫(kù)流程唯一區(qū)別是參數(shù)里的日期范圍換成多個(gè)工作日。這個(gè)設(shè)計(jì)的價(jià)值在于它把“異常處理”從被動(dòng)變成了主動(dòng)。不用在凌晨數(shù)據(jù)缺失時(shí)人工寫(xiě)腳本臨時(shí)抓數(shù)據(jù)而是按一個(gè)固定的“補(bǔ)數(shù)流程”執(zhí)行。6.3 后續(xù)擴(kuò)展從采集到分析爬蟲(chóng)只是數(shù)據(jù)鏈路的第一公里。數(shù)據(jù)進(jìn)庫(kù)之后真正給團(tuán)隊(duì)創(chuàng)造價(jià)值的是分析應(yīng)用。目前我在庫(kù)表基礎(chǔ)上做了幾個(gè)簡(jiǎn)單的視圖品種價(jià)格趨勢(shì)、日環(huán)比排名、港口庫(kù)存與價(jià)格聯(lián)動(dòng)關(guān)系。下一步計(jì)劃接入一個(gè)簡(jiǎn)單的預(yù)測(cè)模型用歷史數(shù)據(jù)和外部事件數(shù)據(jù)做價(jià)格波動(dòng)區(qū)間的參考預(yù)測(cè)。如果你也想做類(lèi)似的項(xiàng)目我給你一個(gè)忠告不要一開(kāi)始就追求大而全的分布式爬蟲(chóng)系統(tǒng)先用最簡(jiǎn)單的方式跑通數(shù)據(jù)鏈路再逐步加調(diào)度、告警、校驗(yàn)這些“耐用性”功能。一個(gè)能穩(wěn)定跑三個(gè)月的簡(jiǎn)單系統(tǒng)遠(yuǎn)比一個(gè)看起來(lái)高級(jí)但天天需要維護(hù)的復(fù)雜系統(tǒng)有價(jià)值。最后分享一個(gè)我從這個(gè)項(xiàng)目里學(xué)到的東西爬蟲(chóng)項(xiàng)目最重要的不是爬蟲(chóng)本身而是數(shù)據(jù)質(zhì)量和可維護(hù)性。把數(shù)據(jù)源變了怎么辦、數(shù)據(jù)錯(cuò)了怎么發(fā)現(xiàn)、任務(wù)掛了怎么恢復(fù)這三件事想清楚你的爬蟲(chóng)項(xiàng)目才算真正“精進(jìn)”了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久久久久久性爱| 欧美精品91| 色综合20p| 亚洲无码国产精品久久| 大香蕉免| av黄图片在线观看| 看黑人AV不卡| 曰韩中文人妻视频| 国产黄a三级三级三级av在线看 | 欧美一区二区三熟女剧情| 黄色片一区二区三区四区五区| 亚洲老熟妇xxx| 超碰综合97在线| 日本操大逼| 国产情色第一第二页在线观看| 日韩欧美亚欧在线视频| 欧色综合| 久久国产乱子伦精品免费女人| 九九久久99| 99婷婷一区二区| 又黄又爽在线观看视频| 亲子敌伦对白在线播放| 久久久久久久久久久人妻| 九九九九9999| 亚洲城人男人的天堂| 香蕉视频精品亚洲一区二区三区在线播| 综合影视国产无码| 亚洲欧洲激情| 日韩中文字幕二区| 亚洲麻豆av一区二区| 国模一区二区三区| 日韩电影在线观看网址| 精彩国产视频播放1区2区| 欧美综合自拍| 欧美白嫩女HD| 啊视频在线| 日本成人在线不卡一区二区三区| 色噜噜国产在线| 日本αv| 嗯嗯啊啊用力视频免费| 蜜乳Av成人片网站| 91热色| 90后性网国产欧美| 91福利网在线观看| 91精品黄在线观看| 亚洲日韩国产精品| 18禁久极品美女久久哦哟呀!| 手机在线看片免费人成视频| 热99这里有精品综合久久 | 97精品综合久久网| 色综合久久久久| 久一区久久蜜桃| 色狠狠综合噜一二三区| blacked精品一区国产| julia国产在线| 国产黄a三级三级三级av在线看 | 夜夜久久久| 成人夜夜爽| 亚洲AV成人无码一二三久久| 后入式999| 性吧在线视频| 99久久精品国产高潮| 粉嫩av一区二区三区天美传媒| 亚州操操穴网| 国产精品自拍欧美在线| 中文字幕美女91| 啊啊啊好疼| 人人澡人人爽人人精品| 无码逼| 久久三区四区| 亚洲黄色网址| 欧美偷拍区| 亚欧美色图| 亚洲色图超碰在线| 五月丁香拍拍激情综合三级| 久久精品黄色| 日韩欧美蜜桃精品久久中文字幕久久 | 青青伊人久久| 九九热精品免费视频| 国产精品一区午夜福利| 99re这里只有精品9| 蜜屁Av| 96久久科窝| 伊人色综合网电影| 日韩欧美操逼xxx| 超碰99在线| 狠狠2050在线观看| 国产传媒日本欧美专区| 丰满人妻-区二区三区免费| 高清无码一区二区三区| 色综合国产在线观看| 狠狠干2020| 熟妇艹鸡八| 校园春色之综合网| 97精品综合久久| 久久久久久亚洲Av无码精| 久久精品操| 亚洲日韩东京热一区| 日本久操视频| 五月婷婷啪啪| 国产成人+综合亚洲+天堂| 人人干黄色| 精品无码久久久久久久久果冻糖心| 老鸭窝在线视频播放| 丝袜狠狠草尤物 91| 偷拍欧美激情| 久久,精品一二三| 欧美性爱一级操| 日韩美女啪啪一区| 国产精品久久妻无码网站| 亚洲欧美黄| 久久9久久| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 伊人五月天婷婷| 97欧美日韩| 超碰在线日韩一区| 亚洲综合在线91| 国产日产欧产美韩系列麻豆免费| 老色鬼成人精品视频下载大在线观看| 久久久91福利姬| 九一综合网| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 欧美成年人性爱视频免费观看| 99热销国产这里有精品| 天天久久久久久| 久久精品六区| 秘书高跟黑色丝袜国产91在线| 欧美激色| 91黄射| 天美传媒精品久久视频| 992视频一区| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 欧美日韩色图片| 超碰人人色| 日韩欧美字幕亚洲一区二区| 中文字幕一区二区三区视频播放| 国产美女高潮叫床视频| 亚洲成av人片色午夜乱码| 亚洲最大无码中文字幕网站| 欧美精品日韩一区二区| 中文字幕丰满人妻日本| 国产男女边吃边摸视频网站| 在线播放免费av福利片| 九九RE视频在线精品| 亚洲色图欧美视频| 女优视频第10页| WWW4虎| 久久综合精品一区二区三区| 国产久久一区二区| 91美女片在线| 欧美成熟性爱精品| 日本一区二区不卡精品| 激情99| 国产精品久久发布| 97一区二区三区视频| 久久精品电影| 蜜臀网 一区| 久久中文字幕不卡人妻| 国产黄片在线免费观看| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 激情五月婷婷| 神马午夜久久久| 麻豆 亚洲 97| 美女性91| 国产又黄又粗的视频| 在线色导航| 亚洲黄网在哪免费看| 丁香五月色情| 在线97在线| 日本久久久精品电影| 999热这里只有精品| 日韩成人精品| 大香蕉丝袜一级片| 玖玖爱一区在线| 精品人妻视频一区二区在线播放| 野狼福利社区| 国产91精品福利在线| 97av在线视频| 久久精品视| 欧美天天干| 中国一级操逼视频| 欧美性爱97超碰| 东京热99999| 久久婷婷电影网| 国产精品蜜乳AV| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 婷婷五月天无码 | 91色婷婷综合久久中文字幕二区| 欧美精品一区二区少妇免费A片| 国产一区二区三区导航| 嗯嗯啊啊啊好舒服| 亚洲综合在线91| 色五天伊人| 亚洲图片欧美91N| 成人资源中文字幕在线观看| 日本免费一区二区不卡| 国产在线播放成人免费| 屌色在线97视频| 操老熟女AV| 欧美成人性爱视频在线播放| 色五月激情网| 98福利在线视频| 无码动漫av中文字幕| 色综合色综合网| 久久久久久裸体| 欧美呦呦性爱| 91丝袜在线观看视频在线观看| 久久亚洲日韩国产欧| www.亚洲成人一区| 十八禁黄色成人网站观看| 日韩性色| 日本免费不卡二区| 一区二区三区国产在线播放| 五月婷婷丁香六月| 精品无码少妇| a在线观看| 狠狠躁天天躁日日躁97| 中国少妇XXXX做受| 精品无码产区一区二| 久操网无码在线| 日本裸体久久色噜噜| 女人综合网| 1024人妻| 夜夜骑夜夜操| 欧美嗯啊……在线观看视频免费| 国产中出内射一区二区| 啊啊好多水| 操婢日韩| 9精品在线| 亚洲免费在线探花| 日韩天天本| 黄片com.| 欧美骚少妇| 国产精品久久久久中文字幕| 欧美亚洲厕所精品偷拍91 | 国产白丝在线| 留下AⅤ黄色片| 午夜精品久久久久久久| 精品国产一级久久| 国产尤物在线三区| 亚洲 日韩 欧美 国产综合体| 超碰97COm中文| 六月婷婷激情| 亚洲色图91| 9热9热综合网| 乱伦a片视频| 97频视在线| 1禁看欧美黄片免费看| 97视频新免费| 一区二区三区四区色图| 9久在线视频只有精品| 久久精品72| 亚洲天堂人妻熟妇视频| 亚洲中文字幕av | 伊人五月天青青草婷婷| 久久免费99精品久久久久久| 亚洲欧美综合网站| 亚洲一区二区三区久久 亚洲一区二区| 91综合熟女| 密臀在线免费观看| 欧美日韩国产高清在线一二三区 | 私色综合网| 欧美日韩国产成人高清| 天天日熟妇| 日本久久精品| 亚洲巨爆乳一区二区三区四季网| 天堂资源站| 丁香五月天堂网| 欧美精品久久96人妻无码| 东京热精品97综合网| 无码免费精品高清| 青青色在线观看| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 精品久久久久黄少妇| 狠狠操夜夜| 亚洲欧美激情小说| 亚洲中文电影| 婷婷综合久久| 国产不卡免费在线视频| 国内伊人久久久久久网站视频| 久久精品天美| av资源在线播放天堂| 欧美日韩国产一区二区小黄片大全| 校园春色中文字幕AV| 五月婷婷性爱| 欧美日日操| 久久啊啊| 日韩八十路老熟女| 久久视网78| 亚洲综合婷婷| 天天操天天射天天日| 中文字幕视频二区| 视频在线中文字幕| 久久色一区| 成片免费播放| 色综合av男人天堂| 狠狠久久手机视频精品| 亚洲女人91| 天天看高清麻豆| 亚洲精品视频二区| 天天插天天操| 免费看黄视频亚洲网站| 日本一级真人黄色性爱视频| 天天干夜夜操一区二区| 日本一久是| AV老汉| 超碰三级秋霞| 欧美做爰无码A片视频| 日本人妻中文字幕精品| 欧美精品三区| 97资源亚洲| 美女丝袜激情小说| 丁香婷婷激情五月天无毒不卡| 日本99视频| 一区二区三区探花在线观看| gogogo免费高清看中国国语| 亚洲色狠| 亚洲全色网| 日韩AV噜噜噜一区二区三区四区| 久久久久久久六六 | 久综合国内精品自在自线| 少妇久久久久久久| 9999久久久| 欧美 亚洲精品首页| 久男人久久| 96久久久精品| 欲色啪| 和协影院中文字幕三区| 99九九久久| 内射日韩大臀美女| 精品久久久av| 熟妇视频一区二区三区在线观看| 韩国一区二区精品亚洲| 婷婷五月天在线观看| 牛黄色久午久| 人妻av在线| 丁香婷婷久久| 欧美天天插| 日韩情色视频| 香一区二区三区| 99热超碰| 欧美爆操91| 美女淫穴| 狠色婷婷久久一区二区三区_| 亚洲色9| 久久av色| 欧美色色人| 中国熟女91| 伊人精品国产| 性欧美999| 日本加勒比无码专区| 超碰美国| 爱妃国产亚洲视频中文字幕| 亚洲国产精品9999在线观看| 亚洲成人一区二区精品| 婷婷久久大香蕉| 91美女丝袜诱惑视频| 性色一线| 日日A∨| 九九人妻| 啊啊啊啊啊啊在线观看| 国产高清精品一区二区三区毛片| 免费精品人妻一区二区三| 国产一区二区三区导航| 九九九九九九九精品视频| 国产伊人自拍| 在线亚洲丝袜视频网站| 久久久啊啊啊| 国产成人99久久亚洲综合| 制度丝袜99| 抽插无码高清一区| 97干日韩| 蜜臀无码一区二区| 淫荡网址| 操比国产| 精品人人| 欧美亚洲清纯| 视频国产欧美在线播放| 精品国产www久久| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 中文字幕 国产区| 91丝袜美腿片| 久久婷婷综合国际产色怕| 国产人妻精品一区二区三区秋霞 | 熟妇乱伦一区二区| 久久动漫精品视频这里只有精品| 国产高清无码一区三区二区| 91国精产品| www.色婷婷| 国产精品乱码久久久久久久久| 亚洲成人精品在线一区| 日本 色 导航| 国产乱码精品久久久久久| ji熟女.com| 2020中文字幕在线| 五月综合色| 又粗又长又大国产不卡| 欧美 亚洲 91| 骚货| 亚洲精品亚洲人成在线麻豆| henhen91| 一区二区三区色综合| 极品白嫩美女白浆成人福利在线看| 天天久久久久久| 高清不卡视频| 日本护士高潮| 日韩性爱免费观看视频| 高精欧美色| 玖玖蜜臀资源网| 亚欧高清v| 日本人妻丰满熟妇久久久久久| 黄色一区三区| 91网站18在线| 99热97| 思思热免费视频观看| 99热在线观看| 揉揉日日日日| 男人天堂最新手机版在线青青草| 欧美美女啪啪视频| 920日本午夜免费| 成人免费不卡在线视频| 丰满人妻无码一区二区三区| 日韩av性爱在线播放| 东京太热男人的天堂久久久| 久草在| 男人的天堂2018.| 日本 欧美 亚中文字幕| 91狼人| 欧美性巨大╳╳╳╳╳高跟鞋| 91搡老女人老妇女老熟女歌词翻译| 日韩精品大香蕉伊人在线| xxx亚洲午夜天堂| 五月天婷婷综合网| 乱人伦 国语对白:视频直接看| 黄在线| 国产熟女免费观看久久| 免费观看的黄色的网站| 一级黄色性爱A级片| 囯戸精品高潮呻吟旡码| 精品丝袜无码一区二区三APP| 亚洲色欧美| 色网色网色网色网色网色| 国产AV天美传媒一区二区三区| 欧美黑人猛交春色影视大全| 熟妇综合一区二区三区| 91搡老女人老妇女老熟女歌词翻译| 国产精品97超碰| 欧美96交| 精品国产AV一区天美传媒| 97欧美日韩| 亚洲欧美首页| 久久欲| 三级三级三级a级全黄三| 亚洲αv一区二区三区| 亚洲精品第一| 日韩有码一区三区| 黑丝日韩av丝袜av| 久久是精品| 成人无码欧美一级A片狼牙直播| 精品国产99999| 精品无码久久久久久久杏吧| 国产一区免费午夜视频| 狠狠色噜噜狠狠狠狠狠色综合久久| 欧美性爱视频免费一区一A | 户外裸露刺激视频第一区| 黑人黄片在线免费观看| 日本伦理一区二区| 国产九九九九九九| 亚洲最新Av| 亚洲成熟国产精品美女| 中文字幕丝袜人妻| 亚洲久草AV色图| 亚洲97在线观看| 国产99久久99热这里只有精品15| 99操| 亚洲人精品午夜不卡| 亚洲国产成人综合碰碰三级经典| 波多野42部无码喷潮在线观看| 日本三级一区二区 在线| 一本久道久久综合狠狠爱| 一直超碰| 97超碰磁| 97视频在线观看播放与子乱对白在线……| 98精品国产乱码久久久久久| 欧美色女人| 日本韩欧美在线播放a| 密臀AV在线| 91精品人| 中文高清一区二区的| 超碰 欧美| www.黄色在线| 国产亚洲色婷婷99精品91| 中文字幕三四五区| 久久99久久99精品免视看婷婷| 久久、1234| 强被迫伦姧在线观看无码网站| 午夜呻吟欧美| 99精品丰满人妻无码| 韩国轻伦国内自拍一区| 超碰97.com| 天天视频综合在线观看视频| 亚洲欧美日韩国产丝袜自拍中文| 乱伦一二三区| 成人久久无码www| 日本精品五区| 97超碰热线| 思思热在线视频免费| julia在线观看久久| 欧美亚洲91| 九九热免费视频| 97资源站日韩| 精爱久久| 黄片免费看的| 亚洲影视第一页| 91操人视频| 国产精选视频| 曰本精品久久久| 国产极品精品美女视频| 台湾佬中文娱乐网久久久久久久久久com | 丁香五月婷婷基地| 久久色精品视频在线| 91青视频| 伦伦成年午夜免费视频| 国产高清无码一区二区三区四区皇冠| 成人精品水蜜桃久久久久久久| 国产高清无码一区二区三区四区皇冠| 人人操人人摸超碰| 青草香蕉网| 国产成人在线观看综合| 欧美999| 人妻激情在线视频| 中文字幕一区 二区三四五 区日 日骚| 国产毛片片精品天天看视频| 夜夜操一区二区| 日本超碰在线国产一区| xxxx网站亚洲精品| 久久久97| 精品二区三四区五电影 | av在线一区二区三区| 亚洲欧洲日韩中文字幕一区| 好湿好紧好爽 视频| 日韩不卡a级视频专区| 亚洲美女AV无码| 精品女同一区| 伊人网在线视频| 麻豆黄色五月天| 青青草原av| 综合激情97| 五月天婷婷影院| 国产性久久久| 色综合久久av| 国产高清视频无码在线| 色y情视频免费看| 美女啪欧美一区| 熟妇女伦乱视频| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 日韩丰满熟妇| 岛国1区2区3区在线观看| 密臀在线一区尤物| 美熟女逼导航AV操逼| 日本一片一区| 色综合中文字幕不卡| rivers-china.com| 久久m| 另类av天堂| 97操97色| 亚洲人精| 宗合情欲网| 中文有码第五页| 亚洲男人的天堂V| 人妻啊啊人妻啊啊| 荡小穴在线观看| 亚洲av夫妻操穴网| 中文字幕 一区二区 亚洲无码| 久久国内| www.婷婷| 欧美人妻精品| 啊啊啊快操我视频| 日日玩天天干| 97手机日韩| 人妻少妇久久中文字幕一区二区 麻豆| 精品国产乱码久久久久久蜜臀| 国内外内射高清视频| 日韩福利电影网| 小日子操bb在线看| 亚洲日韩成人性爱视频| 亚洲激情网一二三四区| 欧美亚洲丝袜美女电影| ai欧美亚洲小说| 欧美另类丝袜熟女| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 日产成人久久| 91熟女丨老女人| 欧美一区二区三区四区综合| 国产网站在线播放| www鬼畜国产男人的天堂| 久婷婷一区| 老熟女综合网 | 99蜜桃臀久久久欧美精品网站| 日操粉逼逼| 久久精品国产亚洲AV嘿嘿| 精品女同一区二区三区| 色妺妺AⅤ| 7777奇米影视久久| 在线 制服丝袜中出 人妻| 91夜夜蜜桃臀1区2区3区| 激情啪啪视频| 91大神精品长腿在线观看网站| 亚洲天堂人妻熟妇视频| 亚洲18禁| 传媒在线观看一区二区三区| 国产成人精品必看| 亚州情色j区| AV色五月| 亚欧无码在线| 蜜伊人色综合97| 久久在肏| 国产成人久久久精品免费AV| 欧美韩国你懂得在线 | 黄色大片免费在线| 四虎永久在线精品免费网址| 黑人精品欧美一区二区蜜桃| 久久免费99精品久久久久久| 欧美黑人XXXⅩ高潮交| 中出20p| 久久久无码av精| 午夜欧美神马久久久久| 色哟哟AⅤ| 大香蕉综合| 啊啊啊在线观看| 区日韩亚洲乱码av电影| 成人怡红院| 97中文天堂| 人妻一区二区三区四区视频| 欧美|91色综合| 亚洲欧美黄| 99激情| 极品销魂美女一区二区| 成人影 天天操 亚洲| WWW.操逼.COM| 人妻在线大香蕉| 深夜国产一区二区三区在线看| 日本不卡二三区| 97伦乱| 日本福利二区视频| 男人综合网| 亚洲欧洲美腿丝袜| 久久无码一区二区二三区性色| 亚洲精品欧美专业| 噜噜噜在线视频| 欧美色老汉| 日日狠狠久久偷偷色综合免费| 99re免费| 东京热精品97综合网| 精品一区二区人妖| 欧美色图片| 九九九九欧美| 亚洲性爱高潮影院| 亚洲 日本 国产 综合| 四虎在线免费视频| 五月婷在线| 青椒国产97在线熟女| 99操逼| 91精品丝袜久久久久久| 成人麻豆av电影网站| 校园春色 亚洲| 射欧美综合| 婷婷亚洲色| 亚洲日本激情| 国产精品欧美在线观看| 日本大香蕉| 五月婷在线| 美中日韩无码| 国产黄色在线播放观看| 夜夜嗨一区二区三区直播内容| 中文字幕丝袜人妻| 欧美一级色| 亚洲av影音先锋| 伊人影院日本| 极品少妇久久久| 伊人视频| 日韩图区| 大香蕉在线视频重口味毛片在线| 超碰久热| 欧美一级A片在线看视频性色| 亚洲无线码欧洲精品区别| 久久少妇| 欧美美女视频| 男人久久天堂| 日本媚薬中文字幕在线| 99热在线只有精品| 婷婷探花久久精品一区| 蜜臀在线看片| 91少妇通奸网站| 青青草久草AV| 国产免费一区| 欧美一品道| 俺也射| 91热色| 白嫩91在线亚洲| 久久久性少妇| 亚洲交性| 男人午夜天堂| 日本熟女不卡视频| 欧美黄色大片在线观看 | 啪啪视频免费在线观看| 国产91影院| 国产二区三区免费视频| 日韩性爱免费观看视频| 一级做a爰片久久毛片图片| 操婢日韩| 亚洲色图殴美色图激情乱伦| 日日碰狠狠添天天爽超| 久久精品国产精品亚洲艾通辽熟妇 | 亚洲操逼网| 爽爽淫人网| 久久欧洲| 欧美天天影院| 精品无码久久久久久久杏吧| 色婷婷狠狠| 中文字幕啊啊啊在线观看视频| 91亚.色| 日韩一级二级| 九九视频黄色片| 超碰免费欧美7| 亚洲精品视频二区| 中日亚韩免费视频| 老熟女91视频| 亚州色图片在线色| 97九色人妻| 亚洲精品一二区| 欧美色院| 亚洲国产亚洲天堂| 夜夜爽妓女| 7777欧美成是人在线观看| 九九九免费视频| 97亚洲国产| 观看免费区二区三区二| 日韩精品视频在线观看一卡二卡| 黑人娇小av在线播放| 热久久无毒不卡| 婷婷色香| 欧美国产日韩清纯唯美| 亚洲最新中文字幕免费| 女人天堂av在线播放| 欧美综合亚洲| 久久超碰98| 91n美女视频| 国产福利第一视频| 三级特黄60分钟播放| 欧美AB在线| 丰满欧美放荡少妇在线| 男人干美女| 亚欧精品久久久久久久久久久| 九九久久一区二区伦理| 天天做天天爱夜夜爽毛片试看| 日本久久久久久久久久| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 日韩有码 一区二区三区| 一本久久久精品| 色综合99999| 天天综合有色网| 欧美黑人XXXⅩ高潮交| av一区二区三区 中文| 国产51色综合久久免费| 无码人妻一区二区三区色欲aⅴ| 三级色影综合网| 日本免费二区三区| 91少妇通奸网站| 激情小说亚洲图片| 亚洲欧洲久久天堂| 久操 高清| 色女综合| 人妻一区二区三区| 东京太热久久久| 69超碰综合| 99热精品在线观看| 色婷婷五月天| 日韩三级一区| 欧美日韩丝袜 | 啊啊啊啊啊啊好湿好爽视频| www鬼畜国产男人的天堂| 人妻熟女午夜精品在线| 国产这里只有精品| 97色色色| 黄污污污污| 日日夜夜干| 超碰三级秋霞| 精品视频日日夜夜| 久视频在线观看| 曰本精品久久久| 青青草精品| 成人热久久精品| laoshunv91| 综合欧美日韩在线| 美女让帅哥通她小鸡鸡| 精品二区三四区五电影 | 人妻熟女一区二区三区在线| 久久AV无码AV| 亚洲精品久久久久毛片A片拉屎| 91日韩| 亚洲九九九| 婷婷婷婷婷婷久久久久| 你懂的在线观看区国产| 欧美日韩大黄片| 久久黄色性爱视频| 福利在线观看一区二区| 亚洲欧洲网站免费观看| 开心婷婷五月| 91xingse| 91成人在线| 久久精品中文| 欧美日韩系列| 久草免费在线视频| 熟女乱3伦999| 乱伦av麻豆| 免费看日产一区二区三区| 看日韩美女二区三区免费操逼视频 | 69人妻精品丰满熟女区| 大乔未久88一区| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 日韩偷拍色图| 久久久久久中文版| 啊啊啊啊啊舒服| 欧美综合亚洲综合| 日韩综合成人免费视频| 久久久久久AⅤ无码免费肉站| 天天插天天射| 91色图片| 亚洲性综合11| 污色区网站| 综合免费无码中文| 五月色综合| 青草香蕉网| 97在线公开视频| 草草草视频在线免费看| 波多野结衣先锋影音| 色区久久| 国产精品suv一区| 国产又粗又长又大的视频| av一区二区三区不卡| 久久亚洲精品成人av| 爱射综合| 啊嗯嗯啊好大好爽| 欧美91在线| 欧美日韩 强奸乱伦| 97久久精品亚洲| 校园春色宗合网| 人妻久久一区二区三区| 欧美强奸乱能| 有码免费观看| 性生活性生大爱77AV国产| 99亚洲精品| 日日爽夜夜爽| 熟妇国产免费一区| 日韩亚洲欧美中文字幕| 亚洲砖码砖专无区2023| 欧美色九九九| 男人的天堂视频精品乱在线| 69少妇一区二区| 精品一区二区三区蜜桃臀赵总| 久久伦理视频久久大香蕉视频| 97天天摸天天爽| 精品性爱一二三区| 日韩99神马视频片| 欧美黑人熟妇精品91| 99久久久久久久久| 一区二区三区四区姦女| 亚州综| 亚洲超碰AV| 亚州久久9| 亚洲精品一区二区日本| 免费AV播放| 天堂涩涩| 日本欧美韩国国产在线| 天美麻豆精品视频99| 国产97在线播放| 少妇无码av专区线| 中文字幕乱碼在线| 性一级黄色录像片网站导航| 天天精品| 亚洲999综合| 人人摸.人人色| 欧美日日夜夜| 9久久久久| 另类小说五月天| 福利五区| 久久国内| 一道α片欧美| 今日头条成人一区二区三区四虎精品| 久久无码精品| 亚洲另类色图片| 蜜桃久久久久久久| 清纯唯美激情| 日本亚洲熟女视频| 青青操视频在线| 蜜乳av一区二区| 青青草伊人久久| 日韩欧美亚欧在线视频| 91狠狠综合久久久久久| 欧美乱欲| 亚洲精品一区中文字幕乱码| 国产精品伦理| 色色激情五月天| 亚洲欧洲综合| 激情综合五月| 欧美亚洲手机在线| 中文字幕成人| 色爱天堂| 国产按摩一区二区三区| 加勒比综合88| 女色视频社区| 91丨国产丨白浆秘 洗澡动漫| 偷窥自拍亚洲色图| 无码不卡亚洲成?人片| 二区熟妇韩日| 欧美一二三级精品在线| 青青草日本中文字幕| 妇女性内射冈站HDWWWCOM| 丝袜性亚洲| 操操逼视频| 偷拍综合亚洲| 8050午夜少妇无码| 欧美草草高清日韩视频| 丁香六月激情综合| 97精品免费视频网站| 一二三四日本视频高清| 精品综合久久久久久五月天| 一区二区三区四区五区高清无码永久视频 | 综合亚州欧美| 五月综合视频| 国产无码精品久久久久久| 日少妇亚洲版| 无套内射人妻在线播放| 91 国产丝袜在线播放-百度| 国产综合操逼高清| 青青草好吊色| 天天日日日射| 久热香蕉精品在线视频| 99视频自拍区| 口爆综合网| 国产一区二区免费福利片| 亚洲综合九| 欧美黄色大香蕉一区二区| 91老司机在线| 330Dv国产女人终合视频极品人与兽 | 风间由美日韩欧美久久| 日韩精品99999| 欧美高清无码免费视频高清版| 青青草乱入乱欲视频在线观看| 强奸乱伦av电影| 手机在线大香蕉| 欧美精品三级黄片| 丁香婷婷激情五月天无毒不卡| 黄色大香焦1级‘′‘| 亚洲男人天堂手机版| 啊啊啊好湿久久| 骚女高跟AV在线| 岛国大片在线观看网站入口| 久久综合日韩亚洲欧美| 亚洲成人性| 撸无码不卡免费视频| 中美日韩毛片| 成年人一级黄色毛片大全在线观看| 97se亚洲综合自| 啊啊啊啊啊啊啊好爽不要| 色官网在线| 亚洲巨爆乳一区二区三区四季网| 欧亚揄拍偷拍精品视频| 天天综合91在线| 亚洲囯产精品女人久久久| 久久在肏| 好舒服视频| 精品妇女一区二区三区| 上海一级黄片| 极品色| 久久久久久九九九九九九| 97蜜桃综合| 麻豆啪啪啪视频| 国产v片在线免费观看| 丝袜美腿操av| 一区二区国产视频在线观看| 91麻豆天美国产欧美日| 日韩成人精品视频自拍| av网站免费看| 亚洲美女高潮喷水视频| 91黑丝美女| 美女啊啊啊啊啊啊啊| 91精品人妻电影| 无码人妻精品一区二区三区99不卡| 91天天综合在线| 使劲用力艹少妇视频一区二区| 丝袜六区| 国产精品久久久三级无码| 日韩精品在线视频在线观看| 91亚洲人| 欧美色爱综合| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 色婷婷六月丁香七月婷婷| 久久久精选| Aa东京男人的天堂| 97 超碰 人人做 人人爱| 五月激情小说| 一级性爱aaaa| 国产AV激情无码久久无码| 中文字幕久久婷婷丁香五月天| 天天色综合影视网| 蜜桃臀一区二区aV| 久久爽爽精品| 91色综合激情| 殴美牲| www.超碰| 激情综合婷婷| 全球成人中文在线| 亚洲欧洲精品视频发布| 激情 欧美 亚洲 小说| 伊人影院日本| 夜夜嗨视频| 日韩大香蕉AV影片| 久久99久久99精品天美传媒棢·纸:. | 好吊色综合| 欧美综合1性辶| 国产久9| 97超碰国产亚洲精品| 亚洲蜜臀视频精品久久| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 大香蕉综合| 殴美,日韩国产伦精品| 99精品无码| 色色婷婷五月| 99热精品在线| 精品色色| 99色| 92福利社视频| 狠狠操夜夜操蜜桃视频三区| 亚洲色五月| 欧美毛片在线网| 97精品国产97久久久| 久久色人体| 日韩在线女优天天干| 97精品国产97久久久久久户外免费| 97天天爽| 久久这里精品国产99丫e6| JULIA人妻风俗店中出电影| 亚洲色欲一区二区三区| AV高清一区| 男生女生啊啊啊啊| 国产久久一区二区| 日韩大香蕉精品在线视频| 亚州Av天美传媒| KK色在线影院| 97免费视频在线| 久久久新亚洲AV| 国产精品第一区第一页| 精品国产91内射久久| 国产一级不卡在线观看| 美女国产一区二区久久| 成人黑料社久久| 开心五月激情网| 四月丁香婷婷| 极品粉嫩少妇视频| 人妻天天爽| 欧美美逼| 91亚洲欧洲| 伊人网青青| 亚洲成人无码影院| 久久久九九网站| 美女黄色一级A视频| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 另类av天堂| 91美女视频电影| 久久久日本电影| 亚洲日韩人妻中文字幕一区| 69少妇一区二区| 黄色片大香蕉| 色嘟嘟人妻天堂网| SS久久| 情色五月天就去干| 久久超碰网| 天天草夜夜草高潮片| 国产呦精品一区二区三区下载| 丁香六月综合激情| 精久久久91| 97在线播放| 日韩肏逼视频| 在线洲亚线| 青春草莓视频在线观看网址| 亚欧成人综合影院| 大香网伊人久久综合| 性色乱AV一区二区| 欧美91丝袜| 精品一区二区三区丰满熟女-亚洲欧美一区| 国产在线观看一区二区三区| av日韩国产一区二区| 久久久久人妻| 日韩78m视频| 本道综合精品| 逼操网站| 色婷五月天| 曰本91情色| 天堂性色| 国产亚洲日韩在线三区黑人| 婷婷五月天av| 国产第二页| 天天综合网网欲色| 成人乱码一区二区三少妇| 日韩女优在线| 99蜜月精品久久| 国产午夜精品理论片一二三区区| 亚洲午夜福利在线影院| 99xav| 91chinese在线| 激情终合网| 天天综合网~91| 日韩一性一交一A片俄罗斯| 禁片 高清 在线观看视频网站| 大香蕉综合在线| 亚洲无 码A片在线观看麻豆| 黄色大香焦1级‘′‘| 久热久一区二区三区| 欧洲一区二区| 日韩激情啪啪啪| 久久精品视频久久久| 青青草AV色| 色欲无码人妻日韩欧美精品| 亚洲 欧美都市激情| 欧美专区17页| 色就色综合| 18精品一区| 亚欧洲日韩国产精品| 国产综合网站在线播放| 99re不伦| 国产精品久久久久久久久久久久| 操屄不卡视频| se,,,亚洲欧美| 91久久久亚洲| 三级三级三级日本99| 色哟哟av| 国产精品久久久久久久黄无码| 男插女青青影院| 91香蕉国产尤物视频| 欧美性爱五月天| 色天天野狼综合社区| 成人三一级一片aaa| 嫩草伊人久久精品| 无码不卡亚洲成?人片| 精品视频久久久久九九九九9999| 欧美线天码中字| 午夜偷拍久久熟女| 蜜桃精品视频一区| 少妇熟女1区2区3区| 久久国产99精品72福利 | 91婷婷伊人狠人| 日韩人妻无码不卡网站| 九九色图| 91丝袜人妻| 天天色播| 欧洲视频在线| 婷婷伊人綜合中文字幕| 97在线/亚洲|