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

ARTICLE DETAIL

資訊詳情

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

Python小說(shuō)章節(jié)爬蟲(chóng)實(shí)戰(zhàn):Requests與BeautifulSoup實(shí)現(xiàn)增量更新

Python小說(shuō)章節(jié)爬蟲(chóng)實(shí)戰(zhàn):Requests與BeautifulSoup實(shí)現(xiàn)增量更新 最近想給自己的小站“某閣”做一套離線閱讀方案于是順手寫了一個(gè)小說(shuō)章節(jié)爬取腳本。核心功能很簡(jiǎn)單輸入一個(gè)目錄頁(yè)地址腳本自動(dòng)把章節(jié)標(biāo)題和正文鏈接抓下來(lái)逐章下載并保存成 Markdown 文件下次再跑還能增量更新、跳過(guò)已下載章節(jié)。這個(gè)腳本順便解決了我一直以來(lái)的痛點(diǎn)——網(wǎng)頁(yè)上看小說(shuō)翻頁(yè)太碎想復(fù)制某段話做筆記還得手動(dòng)去選文本。把它拉到本地之后檢索、批注、轉(zhuǎn)電子書都方便多了。先說(shuō)清楚一個(gè)前提本文里的“小說(shuō)”指的是放在我自己測(cè)試站點(diǎn)上的公開(kāi)文本域名我也用了 example.com 做占位。你如果想把腳本用到其他站點(diǎn)一定先確認(rèn)這個(gè)站點(diǎn)的服務(wù)條款、robots.txt 和內(nèi)容版權(quán)別拿腳本去抓未授權(quán)的文學(xué)作品這個(gè)問(wèn)題在文章最后我會(huì)專門展開(kāi)。下面進(jìn)入正題講講這個(gè)腳本從需求到實(shí)現(xiàn)的全過(guò)程。1. 為什么寫這個(gè)爬取腳本需求拆解與方案設(shè)計(jì)1.1 核心需求不是“下載幾個(gè)頁(yè)面”這么簡(jiǎn)單這個(gè)項(xiàng)目聽(tīng)上去是個(gè)很小的爬蟲(chóng)但真做起來(lái)需求比想象中多。我給自己列了幾個(gè)硬性要求自動(dòng)發(fā)現(xiàn)章節(jié)目錄頁(yè)里可能有幾十上百個(gè)章節(jié)鏈接不能靠手寫 URL。正文干凈只要小說(shuō)正文不要導(dǎo)航欄、廣告位、推薦閱讀等雜七雜八的東西。增量更新小說(shuō)更新后重跑腳本已經(jīng)下載過(guò)的章節(jié)不要重復(fù)抓。斷點(diǎn)續(xù)傳網(wǎng)絡(luò)一抖或者服務(wù)器超時(shí)腳本失敗后重新運(yùn)行能從上次失敗的地方繼續(xù)。命令行可配置起始章節(jié)、結(jié)束章節(jié)、請(qǐng)求延時(shí)、輸出目錄都要能在命令行傳參不用每次改代碼。說(shuō)白了這是一個(gè)“書架管理員”的角色你要告訴它從哪個(gè)書架拿書、拿哪些章節(jié)、已經(jīng)拿過(guò)的別動(dòng)、被卡住的書最后提醒你。把目標(biāo)拆到這個(gè)程度后面寫代碼就會(huì)非常順。1.2 技術(shù)選型Python 3 requests BeautifulSoup選型的時(shí)候我第一個(gè)排除的是通用爬蟲(chóng)框架 Scrapy。原因很簡(jiǎn)單殺雞不用牛刀。Scrapy 有 Spider、Item Pipeline、Middleware、調(diào)度器這些概念對(duì)一個(gè)只有目錄頁(yè)和詳情頁(yè)兩種頁(yè)面的小腳本來(lái)說(shuō)光是理解項(xiàng)目結(jié)構(gòu)就夠折騰半天。輕量腳本最大的優(yōu)勢(shì)是“單個(gè)文件、直接跑、好解釋”出了問(wèn)題翻開(kāi)代碼一眼就能定位。Python 的 HTTP 客戶端我選了 requests而不是標(biāo)準(zhǔn)庫(kù) urllib。requests 的 API 簡(jiǎn)潔太多默認(rèn)幫你處理連接池、Cookie 和編碼探測(cè)代碼寫起來(lái)像讀英文句子。HTML 解析用 BeautifulSoup4 搭配 lxml 解析器。為什么不直接用正則因?yàn)?HTML 不是規(guī)范的純文本標(biāo)簽嵌套、屬性順序、空白字符都可能變化正則寫出來(lái)的匹配規(guī)則非常脆弱。比如“提取標(biāo)題”你可能會(huì)寫h1(.*?)/h1結(jié)果頁(yè)面結(jié)構(gòu)一調(diào)整或者標(biāo)題里混入了多余標(biāo)簽正則就失效了。BeautifulSoup 是先把整棵 DOM 樹(shù)解析出來(lái)再用select_one、select這種 CSS 選擇器去定位節(jié)點(diǎn)哪怕標(biāo)簽之間多了些屬性或空白也能穩(wěn)定命中。這里有個(gè)生活化的類比正則像一把剪刀你得精確知道每一刀剪在哪BeautifulSoup 像溶劑把整張貼紙泡進(jìn)去標(biāo)簽自己就從底紙上脫落了。對(duì)小說(shuō)網(wǎng)頁(yè)這種“結(jié)構(gòu)相似但細(xì)節(jié)很亂”的場(chǎng)景溶劑明顯更好用。1.3 為什么不直接用 shell 腳本可能有人會(huì)問(wèn)抓個(gè)網(wǎng)頁(yè)用 curl 加幾條 shell 命令不就行了我試過(guò)最后放棄了。簡(jiǎn)單場(chǎng)景下curl -s URL | grep p確實(shí)能出來(lái)點(diǎn)東西可一旦遇到編碼問(wèn)題、需要帶上 User-Agent、處理異常超時(shí)、增量對(duì)比shell 腳本里的轉(zhuǎn)義和管道就會(huì)變得特別難維護(hù)。而且 shell 里沒(méi)有像 BeautifulSoup 這樣成熟的 DOM 解析庫(kù)文本清洗基本靠 sed、awk 和正則硬拼代碼量不大坑卻特別多。所以最終方案定的是Python 3.8 requests BeautifulSoup4 lxml argparse。argparse 是標(biāo)準(zhǔn)庫(kù)用來(lái)解析命令行參數(shù)這樣腳本就能通過(guò)參數(shù)控制起始章節(jié)和延時(shí)而不是每次改源碼。2. 腳本的核心實(shí)現(xiàn)目錄解析、正文提取與增量更新2.1 全局配置把“經(jīng)常變的”集中到一起寫爬蟲(chóng)腳本最容易踩的坑就是把 URL、選擇器、請(qǐng)求頭這些變量散落在代碼各個(gè)角落。站點(diǎn)一旦改版你得像大海撈針一樣去翻代碼。我在腳本開(kāi)頭把所有“可能變化”的東西集中成了幾個(gè)全局常量BASE_URL https://example.com/book/ # 目標(biāo)站點(diǎn)的目錄頁(yè) CHAPTER_LIST_SELECTOR .chapter-list a # 目錄頁(yè)中所有章節(jié)鏈接 CONTENT_SELECTOR #chapter-content # 章節(jié)正文容器選擇器集中定義的好處是改版時(shí)你只要打開(kāi)開(kāi)發(fā)者工具看一眼新的 class 或 id改這一處配置就行。這個(gè)習(xí)慣放到任何爬蟲(chóng)項(xiàng)目里都適用。2.2 目錄解析從一頁(yè)出發(fā)找到所有章節(jié)目錄頁(yè)是整個(gè)腳本的入口。我用get_chapter_list()這個(gè)函數(shù)請(qǐng)求目錄頁(yè)然后用 CSS 選擇器找到所有章節(jié)鏈接。這里有幾個(gè)細(xì)節(jié)值得注意首先href 可能是相對(duì)路徑比如/book/123.html所以需要用urljoin(BASE_URL, href)拼成完整的 URL。其次章節(jié)標(biāo)題里可能包含空格、特殊符號(hào)我會(huì)調(diào)用get_text(stripTrue)把節(jié)點(diǎn)里的純文本提取出來(lái)順便去掉首尾空白。最后解析結(jié)果保存成列表每個(gè)元素是一個(gè){title: ..., url: ...}字典方便后面統(tǒng)一處理。def get_chapter_list(): resp fetch_page(BASE_URL) soup BeautifulSoup(resp.text, lxml) items [] for a in soup.select(CHAPTER_LIST_SELECTOR): title a.get_text(stripTrue) href a.get(href) if not title or not href: continue items.append({title: title, url: urljoin(BASE_URL, href)}) return items判斷if not title or not href是必要的因?yàn)橛行┠夸涰?yè)里會(huì)混入“返回首頁(yè)”“下一頁(yè)”這類鏈接雖然選擇器能選中但它們不是有效章節(jié)。2.3 正文提取拿到正文再做文本清洗單章正文頁(yè)面的 HTML 通常比目錄頁(yè)復(fù)雜正文旁邊全是廣告、推薦、版權(quán)聲明。我的做法是先定位到正文容器比如div idchapter-content然后在這個(gè)節(jié)點(diǎn)內(nèi)部用get_text(\n, stripTrue)提取純文本。這一步的關(guān)鍵是選對(duì)容器選錯(cuò)容器會(huì)把評(píng)論區(qū)、推薦閱讀一起抓進(jìn)來(lái)。提取完純文本之后還要做一層清洗連續(xù)三個(gè)以上的換行合并成兩個(gè)空行。為什么要合并很多網(wǎng)頁(yè)源碼里段落之間會(huì)有大量空行和空白字符直接保存會(huì)讓 Markdown 看起來(lái)非常松散。我實(shí)測(cè)下來(lái)這個(gè)正則基本夠用text re.sub(r\n{3,}, \n\n, text)順便說(shuō)一句很多人一開(kāi)始會(huì)用soup.get_text()從整個(gè)頁(yè)面提取文本然后試圖用正則去掉“上一章”“下一章”這些關(guān)鍵詞。我的經(jīng)驗(yàn)是這種做法又慢又脆。正確的做法永遠(yuǎn)是先精確縮小范圍到正文容器再清洗順序不能反。2.4 增量更新與斷點(diǎn)續(xù)傳進(jìn)度文件是關(guān)鍵增量更新是腳本最有價(jià)值的部分。每次重跑如果都全量抓一遍既浪費(fèi)流量又容易觸發(fā)服務(wù)器限流。我的方案是用一個(gè)progress.json文件記錄已經(jīng)成功抓取的章節(jié)鏈接。重新運(yùn)行時(shí)先加載這個(gè)文件遇到已經(jīng)記錄過(guò)的 URL 就直接跳過(guò)。為什么用 URL 作為唯一標(biāo)識(shí)而不是章節(jié)標(biāo)題因?yàn)闃?biāo)題可能重復(fù)比如第一卷和第二卷都可能出現(xiàn)“重逢”這種章節(jié)名但 URL 幾乎不會(huì)重復(fù)。進(jìn)度文件里的記錄格式也很簡(jiǎn)單{ https://example.com/book/123.html: { title: 第一章 初入江湖, done: true, time: 2025-01-01 12:00:00 } }每成功抓完一章我就立刻把進(jìn)度寫入文件。這樣一來(lái)即使腳本運(yùn)行到一半被 CtrlC 中斷下一次重新啟動(dòng)也能從斷點(diǎn)繼續(xù)不會(huì)重復(fù)勞動(dòng)。如果哪天你想強(qiáng)制全量重抓加一個(gè)--force參數(shù)就行。腳本里這是通過(guò) argparse 實(shí)現(xiàn)的布爾開(kāi)關(guān)存在就忽略進(jìn)度文件。2.5 命令行參數(shù)設(shè)計(jì)不折騰那就是最好的交互腳本的最終使用者是命令行用戶所以交互設(shè)計(jì)要盡量符合直覺(jué)。我定義了這么幾個(gè)參數(shù)參數(shù)說(shuō)明默認(rèn)值--output輸出目錄./novel_output--start起始章節(jié)序號(hào)1--end結(jié)束章節(jié)序號(hào)0 表示全部0--delay每次請(qǐng)求間隔秒數(shù)可傳小數(shù)1.0--force忽略進(jìn)度文件強(qiáng)制重抓無(wú)--list只打印目錄不下載正文無(wú)--list這個(gè)參數(shù)是在調(diào)試階段加上的。沒(méi)它之前我想確認(rèn)目錄解析結(jié)果只能直接跑下載非常難受。加上之后我可以先執(zhí)行python novel_crawler.py --list快速看章節(jié)列表是否完整確認(rèn)無(wú)誤再真正下載。3. 從環(huán)境準(zhǔn)備到完整運(yùn)行爬取腳本實(shí)操全過(guò)程3.1 環(huán)境準(zhǔn)備虛擬環(huán)境是基本禮儀Python 項(xiàng)目不管大小我都建議用虛擬環(huán)境隔離依賴。命令行操作如下mkdir novel-crawler cd novel-crawler python -m venv venv source venv/bin/activate # Windows 下用 venv\Scripts\activate pip install requests beautifulsoup4 lxml安裝依賴時(shí)注意lxml 在某些 Python 版本上需要編譯阻塞時(shí)間可能較長(zhǎng)耐心等就行。如果你在 macOS 上遇到lxml安裝失敗一般是因?yàn)槿鄙?libxml2可以用brew install libxml2補(bǔ)上再裝Windows 上通常有預(yù)編譯 wheel問(wèn)題不大。3.2 先摸清目標(biāo)站點(diǎn)的 HTML 結(jié)構(gòu)寫解析代碼之前一定要先打開(kāi)瀏覽器開(kāi)發(fā)者工具按 F12 選中“檢查”把目錄頁(yè)和詳情頁(yè)的結(jié)構(gòu)看明白。這個(gè)步驟我每次都會(huì)做哪怕目標(biāo)頁(yè)面以前抓過(guò)。原因很簡(jiǎn)單頁(yè)面改版不會(huì)給你發(fā)通知今天能解析的選擇器明天可能就失效了。我一般會(huì)先看三樣?xùn)|西目錄頁(yè)里所有章節(jié)鏈接的共同特征比如都在div classchapter-list下面。詳情頁(yè)里正文容器的 id 或 class。頁(yè)面源碼里的字符編碼聲明。第一個(gè)版本抓下來(lái)最好用--list參數(shù)驗(yàn)證目錄解析。如果章節(jié)數(shù)量不對(duì)先回瀏覽器里檢查選擇器別急著跑全量。3.3 完整腳本代碼與運(yùn)行方式下面是我精簡(jiǎn)后的完整腳本可以直接存成novel_crawler.py使用。注意替換BASE_URL和兩個(gè)選擇器常量為你自己目標(biāo)站點(diǎn)的實(shí)際值。#!/usr/bin/env python3 某閣小說(shuō)章節(jié)爬取腳本 用法示例 python novel_crawler.py --list python novel_crawler.py --start 1 --end 20 --delay 1.5 python novel_crawler.py --force import re import json import time import random import logging import argparse from pathlib import Path from urllib.parse import urljoin import requests from bs4 import BeautifulSoup BASE_URL https://example.com/book/ CHAPTER_LIST_SELECTOR .chapter-list a CONTENT_SELECTOR #chapter-content HEADERS { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36 } logging.basicConfig( levellogging.INFO, format%(asctime)s [%(levelname)s] %(message)s ) logger logging.getLogger(novel_crawler) def fetch_page(url, retry3, timeout10): 請(qǐng)求頁(yè)面并帶簡(jiǎn)單重試。 for attempt in range(1, retry 1): try: resp requests.get(url, headersHEADERS, timeouttimeout) resp.raise_for_status() resp.encoding resp.apparent_encoding or utf-8 return resp except requests.RequestException as exc: logger.warning(第 %s 次請(qǐng)求 %s 失敗%s, attempt, url, exc) if attempt retry: time.sleep(2 * attempt) raise RuntimeError(f請(qǐng)求失敗{url}) def safe_filename(title): 把 Windows/Linux 文件名里的非法字符替換成下劃線。 return re.sub(r[\\/:*?|\r\n\t], _, title).strip() def get_chapter_list(): 解析目錄頁(yè)返回章節(jié)字典列表。 resp fetch_page(BASE_URL) soup BeautifulSoup(resp.text, lxml) items [] for a in soup.select(CHAPTER_LIST_SELECTOR): title a.get_text(stripTrue) href a.get(href) if not title or not href: continue items.append({title: title, url: urljoin(BASE_URL, href)}) return items def extract_content(html): 從正文頁(yè)解析并清洗正文文本。 soup BeautifulSoup(html, lxml) node soup.select_one(CONTENT_SELECTOR) or soup.body text node.get_text(\n, stripTrue) text re.sub(r\n{3,}, \n\n, text) return text def save_progress(progress_file, progress): progress_file.write_text( json.dumps(progress, ensure_asciiFalse, indent2), encodingutf-8 ) def main(): parser argparse.ArgumentParser(description某閣小說(shuō)章節(jié)爬取腳本) parser.add_argument(--output, default./novel_output) parser.add_argument(--start, typeint, default1) parser.add_argument(--end, typeint, default0) parser.add_argument(--delay, typefloat, default1.0) parser.add_argument(--force, actionstore_true) parser.add_argument(--list, actionstore_true) args parser.parse_args() output_dir Path(args.output) output_dir.mkdir(parentsTrue, exist_okTrue) progress_file output_dir / progress.json chapter_list get_chapter_list() logger.info(目錄頁(yè)共發(fā)現(xiàn) %s 個(gè)章節(jié), len(chapter_list)) if args.list: for i, item in enumerate(chapter_list, 1): print(f{i:04d} {item[title]} {item[url]}) return if args.end and args.end 0: chapter_list chapter_list[args.start - 1 : args.end] else: chapter_list chapter_list[args.start - 1 :] progress {} if progress_file.exists(): progress json.loads(progress_file.read_text(encodingutf-8)) failed [] for idx, item in enumerate(chapter_list, args.start): if item[url] in progress and not args.force: logger.info(已跳過(guò)已下載章節(jié)%s, item[title]) continue logger.info(抓取章節(jié)%s%s, idx, item[title]) try: resp fetch_page(item[url]) content extract_content(resp.text) md_text f# {item[title]}\n\n{content}\n filename f{idx:04d}_{safe_filename(item[title])}.md (output_dir / filename).write_text(md_text, encodingutf-8) progress[item[url]] { title: item[title], done: True, time: time.strftime(%Y-%m-%d %H:%M:%S), } save_progress(progress_file, progress) except Exception as exc: logger.error(章節(jié)抓取失敗%s錯(cuò)誤%s, item[title], exc) failed.append({title: item[title], url: item[url]}) if idx args.start len(chapter_list) - 1: time.sleep(args.delay random.uniform(0, 0.5)) if failed: logger.warning(有 %s 個(gè)章節(jié)失敗建議檢查網(wǎng)絡(luò)后重跑, len(failed)) for n, f in enumerate(failed, 1): logger.warning(%s. %s - %s, n, f[title], f[url]) md_files sorted(output_dir.glob(*.md)) if md_files: index [# 小說(shuō)目錄\n] for m in md_files: index.append(f- [{m.stem}]({m.name})) (output_dir / _index.md).write_text(\n.join(index) \n, encodingutf-8) logger.info(執(zhí)行完畢共處理 %s 個(gè)章節(jié)失敗 %s 個(gè), len(chapter_list), len(failed)) if __name__ __main__: main()運(yùn)行起來(lái)很簡(jiǎn)單。第一次跑你可以先只抓前兩章試水python novel_crawler.py --start 1 --end 2 --delay 1確認(rèn)生成的 Markdown 文件內(nèi)容正常后再全量跑python novel_crawler.py --delay 1.53.4 運(yùn)行結(jié)果目錄、章節(jié)、索引一應(yīng)俱全腳本跑完后輸出目錄里會(huì)是這樣novel_output/ ├── 0001_第一章 初入江湖.md ├── 0002_第二章 風(fēng)起云涌.md ├── 0003_第三章 客棧夜話.md ├── ... ├── _index.md └── progress.json每個(gè)章節(jié)文件頂部是標(biāo)題下面是正文段落之間用空行分隔在 Typora、Obsidian 或 VS Code 里打開(kāi)閱讀體驗(yàn)都不錯(cuò)。_index.md是自動(dòng)生成的目錄索引點(diǎn)進(jìn)去就能跳轉(zhuǎn)到對(duì)應(yīng)章節(jié)方便得很。我實(shí)操時(shí)最喜歡加的細(xì)節(jié)是章節(jié)文件名的序號(hào)前綴。有了0001_、0002_這種前綴文件在資源管理器里排序天然正確不然“第十章”會(huì)排在“第二章”前面看著難受。4. 實(shí)測(cè)遇到的坑小說(shuō)爬取腳本常見(jiàn)問(wèn)題排查4.1 請(qǐng)求超時(shí)與重試網(wǎng)絡(luò)不穩(wěn)是常態(tài)說(shuō)實(shí)話爬蟲(chóng)腳本里“代碼寫錯(cuò)”反而不是最多的問(wèn)題最多的坑是網(wǎng)絡(luò)層面的。requests.get默認(rèn)不會(huì)等太久但有些詳情頁(yè)響應(yīng)慢超過(guò)默認(rèn)時(shí)間就直接拋異常。我在fetch_page里設(shè)置了timeout10并加了三次重試重試間隔按 2 秒、4 秒遞增避免一失敗就立刻轟炸目標(biāo)服務(wù)器。有時(shí)候不是完全超時(shí)而是返回了 5xx 狀態(tài)碼。raise_for_status()會(huì)把這情況變成異常觸發(fā)重試。如果你發(fā)現(xiàn)某個(gè)章節(jié)反復(fù)失敗大概率是那一個(gè)頁(yè)面有動(dòng)態(tài)加載或者服務(wù)器偶發(fā)問(wèn)題不用急著改代碼等一會(huì)兒重跑腳本讓增量更新機(jī)制去補(bǔ)缺就行。4.2 中文亂碼先探測(cè)編碼再談解析小說(shuō)網(wǎng)站基本都是中文頁(yè)面編碼處理不好抓下來(lái)就是滿屏亂碼。我第一次寫的時(shí)候直接用了resp.text結(jié)果某些頁(yè)面輸出“”這種字符。原因是 requests 默認(rèn)用響應(yīng)頭里的 charset 解碼但有的頁(yè)面響應(yīng)頭沒(méi)寫清楚或者寫錯(cuò)了。解決方案就是那行關(guān)鍵代碼resp.encoding resp.apparent_encoding or utf-8apparent_encoding是 requests 根據(jù)頁(yè)面實(shí)際字節(jié)內(nèi)容推測(cè)出來(lái)的編碼對(duì)這個(gè)場(chǎng)景夠準(zhǔn)。實(shí)測(cè)之后亂碼問(wèn)題基本絕跡。4.3 解析不到正文選擇器失效是頭號(hào)敵人如果腳本狀態(tài)碼正常、也沒(méi)有亂碼但抓下來(lái)的 Markdown 文件里只有標(biāo)題沒(méi)有正文那 90% 是CONTENT_SELECTOR失效了。常見(jiàn)原因有兩種網(wǎng)站改版換了 class 名或者詳情頁(yè)是動(dòng)態(tài)渲染正文內(nèi)容不在初始 HTML 里而是通過(guò) JavaScript 加載。第一種情況去瀏覽器開(kāi)發(fā)者工具里重新定位正文容器更新選擇器常量就行。第二種情況更麻煩requests 拿不到動(dòng)態(tài)渲染后的內(nèi)容你需要用 Selenium、Playwright 這類自動(dòng)化瀏覽器。不過(guò)我自己寫這類腳本時(shí)優(yōu)先級(jí)很低小說(shuō)正文大多是靜態(tài) HTML遇到動(dòng)態(tài)渲染的站點(diǎn)我會(huì)先換一個(gè)能靜態(tài)抓取的頁(yè)面而不是一上來(lái)就引入重型工具。4.4 增量更新失效小心進(jìn)度文件和你“作對(duì)”增量更新邏輯本身不難坑在于用戶和腳本的預(yù)期不一致。比如我手動(dòng)刪掉了一個(gè)章節(jié)文件希望重抓這一章但腳本看到progress.json里已經(jīng)記錄了那個(gè) URL于是直接跳過(guò)。刪除文件不等于刪除進(jìn)度這個(gè)行為會(huì)讓人困惑。解決辦法有兩個(gè)一是刪除文件時(shí)把progress.json也一起清掉或者用--force參數(shù)強(qiáng)制全量重抓二是在代碼里把跳過(guò)條件從“URL 是否在進(jìn)度文件里”改成“目標(biāo)文件是否已存在”。兩種方案各有取舍我選擇保留進(jìn)度文件判斷因?yàn)檫@樣可以避免因?yàn)檎鹿?jié)標(biāo)題變化導(dǎo)致文件重復(fù)生成。4.5 文件名非法字符Windows 用戶的隱藏炸彈章節(jié)標(biāo)題千奇百怪有冒號(hào)、問(wèn)號(hào)、雙引號(hào)甚至有斜杠。Windows 文件系統(tǒng)不允許文件名包含\ / : * ? |這些字符如果直接用標(biāo)題當(dāng)文件名write_text就會(huì)報(bào)OSError。我寫了safe_filename()把非法字符全部替換成下劃線。這樣就算標(biāo)題里出現(xiàn)“第一卷風(fēng)起上”也能安全落盤。4.6 命令行工具找不到環(huán)境變量這個(gè)經(jīng)典坑很多新手在 Windows 上會(huì)遇到這樣的報(bào)錯(cuò)python : 無(wú)法將“python”項(xiàng)識(shí)別為 cmdlet、函數(shù)、腳本文件或可運(yùn)行程序的名稱。這和 npm、claude 等命令行工具報(bào)“無(wú)法識(shí)別”是同一類問(wèn)題十有八九是軟件裝好了但沒(méi)加入系統(tǒng) PATH。解決路徑是找到 Python 安裝目錄把python.exe所在路徑加入環(huán)境變量的 Path 里然后重開(kāi)終端。如果你裝的是 Microsoft Store 版 Python正常它會(huì)自動(dòng)配置好如果你手動(dòng)安裝但忘了勾選“Add Python to PATH”就會(huì)觸發(fā)這個(gè)報(bào)錯(cuò)。還有一種情況是已經(jīng)加了 PATH但用的是舊終端窗口重新打開(kāi)一個(gè)再試基本就好了。4.7 常見(jiàn)問(wèn)題速查表現(xiàn)象可能原因解決辦法返回 403請(qǐng)求頭太像爬蟲(chóng)設(shè)置瀏覽器 User-Agent增大--delay抓下來(lái)全是亂碼頁(yè)面編碼識(shí)別失敗設(shè)置resp.encoding resp.apparent_encoding有標(biāo)題沒(méi)正文正文選擇器失效或動(dòng)態(tài)加載更新選擇器必要時(shí)換 Playwright跳過(guò)已刪除的章節(jié)progress.json還在刪除進(jìn)度文件或使用--force保存文件報(bào)錯(cuò)文件名含非法字符用腳本里的safe_filename()替換命令行提示無(wú)法識(shí)別未加入 PATH配置環(huán)境變量后重開(kāi)終端5. 別踩版權(quán)紅線爬蟲(chóng)合規(guī)與腳本能力擴(kuò)展5.1 爬蟲(chóng)禮儀技術(shù)能做不代表可以做這一個(gè)章節(jié)是我最想叮囑的。寫爬蟲(chóng)腳本很容易讓人產(chǎn)生一種錯(cuò)覺(jué)只要請(qǐng)求能通頁(yè)面上所有內(nèi)容都能拿走。但技術(shù)可行性和法律合規(guī)性完全是兩碼事。原創(chuàng)小說(shuō)、文章、圖片本質(zhì)上都是創(chuàng)作者的勞動(dòng)成果受著作權(quán)法保護(hù)。未經(jīng)授權(quán)爬取和復(fù)制哪怕只是存在本地自己看也可能構(gòu)成侵權(quán)。我給自己定的幾條原則供你參考只抓自有站點(diǎn)、明確授權(quán)站點(diǎn)以及進(jìn)入公有領(lǐng)域的作品。抓取前先看目標(biāo)站點(diǎn)的robots.txt尊重站方的爬蟲(chóng)協(xié)議??刂普?qǐng)求頻率設(shè)置合理延時(shí)不給目標(biāo)服務(wù)器造成壓力。不碰付費(fèi)墻、登錄墻不試圖繞過(guò)任何訪問(wèn)控制。爬到的內(nèi)容只用于個(gè)人學(xué)習(xí)、備份和檢索不公開(kāi)傳播不商用。順便說(shuō)一句很多網(wǎng)站會(huì)在robots.txt里說(shuō)明哪些路徑允許爬取哪些不允許。這是一個(gè)約定俗成的技術(shù)規(guī)范雖然不是法律文件但遵守它是爬蟲(chóng)開(kāi)發(fā)者的基本素養(yǎng)。練習(xí)時(shí)完全可以用《西游記》《三國(guó)演義》這類公版作品或者自己搭一個(gè)測(cè)試站點(diǎn)來(lái)跑腳本。5.2 腳本化思維小說(shuō)爬蟲(chóng)只是冰山一角這個(gè)腳本雖然名字叫“小說(shuō)章節(jié)爬取”但實(shí)際上它的內(nèi)核是通用的“列表頁(yè) 詳情頁(yè)”信息采集模式。把CHAPTER_LIST_SELECTOR換成博客文章的標(biāo)題鏈接把CONTENT_SELECTOR換成文章正文容器它立刻就能變成一個(gè)博客離線備份工具。再改改它也可以收集新聞稿、開(kāi)源文檔、公告等等。這種把重復(fù)勞動(dòng)變成腳本的意識(shí)比腳本本身值錢。我在實(shí)際工作里碰到“每隔幾天要手動(dòng)下載一批頁(yè)面”的需求第一反應(yīng)不再是打開(kāi)瀏覽器一個(gè)個(gè)點(diǎn)而是想這個(gè)流程能不能參數(shù)化、能不能增量、能不能掛在定時(shí)任務(wù)里。這個(gè)項(xiàng)目就是這種思維的產(chǎn)物。5.3 下一階段可以做的增強(qiáng)如果后續(xù)想繼續(xù)折騰我列幾個(gè)方向定時(shí)更新Linux 上用 cronWindows 上用任務(wù)計(jì)劃程序每天凌晨自動(dòng)跑一次--delay 2實(shí)現(xiàn)追更自動(dòng)化。全文搜索把 Markdown 文件丟進(jìn) Obsidian 或搭建一個(gè)本地文檔站整庫(kù)搜索很順暢。推送通知抓完新章節(jié)后用腳本調(diào)用飛書或郵件接口把更新摘要推送給你。轉(zhuǎn)電子書用 Pandoc 把 Markdown 批量轉(zhuǎn)成 EPUB導(dǎo)入閱讀器。這些擴(kuò)展都不難前提是核心抓取和增量邏輯足夠穩(wěn)。最后再分享一點(diǎn)實(shí)際操作中的體會(huì)這個(gè)腳本最開(kāi)始的版本只有 40 行能抓但不好用后來(lái)我花了一天時(shí)間把進(jìn)度、斷點(diǎn)、命令行參數(shù)補(bǔ)齊代碼翻了一倍但使用體驗(yàn)完全不一樣。寫這類工具不要怕加代碼真正該怕的是功能不完整、邊界情況一堆。你先跑通一條最小路徑再逐步補(bǔ)強(qiáng)這是最省力的做法。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲性图一区二区| 97啪啪| 成人在线免费网址| 亚洲视频一区| 久久久婷| www.激情五月| 伊人久久婷婷| 六月激情综合| 天天色视频| 久久婷婷丁香五月一二三| 国产亚洲99久久精品熟| 艳妇野外情欲放荡HD| 亚洲色夜| 色九亚洲| 丁香 久久| 九九九九九九九热| 激情五月五月五月婷婷| 91婷婷五月天综合视频| 日韩抽插操逼| 婷婷五月亚洲激情| 五月丁香六月综合情在线观看| 丁香六月亚洲| 99艹精品在线观看| 五月丁香婷婷色播无码| 五月激情久久| WWW.久久久久久久久久久久久| 国产精品18久久久| 激情内射人妻1区2区3区| 超碰av在线| 国av网| 九九九九国产| 99热免费| 婷婷五月花| 99热啪啪| 欧美交换配乱吟粗大25P| 婷婷五月色色| 婷婷午夜| 天天爱天天操| 久久婷婷九月国产精品| 久久久91精品| 99超碰在线观看| 六月婷婷AV| av中文字幕免费观看| 99色色| 久久机热/这里只有精品| 啪啪 综合网| 久久婷婷五月天亚洲欧美| 丁香五月久久综合| 激情五月天影院| 丁香色五月天| 99干视频| 人妻少妇色综合| 五月丁香综合激情| 五月天婷婷狂暴白浆| 国产肥白大熟妇BBBB视频| 99热亚洲| 视色综合| 99ri视频在线播放| AVDV久久| 丁香五月亚洲综合| 淫视馆AV在线| 97色五月天| 五月天成人伊人| 久久婷五月综合色| 狠狠穞A片一區二區三區| 噜一噜在线| 亚洲 视频 导航 一区| 啪啪综合| 婷婷丁香综合网| 久9精品视频在线| 97色一二三| 日韩久综合| 婷婷色九月| 这里只有精品视频视频在线观看| 五月婷婷六月奇米网丁香| 丁香五月五月婷婷五月天激情四射| 五月丁香婷婷伊人| 91性高潮久久久久久久久| 99热亚洲精品| 九月婷婷人人操人人舔人人爱| 亚洲视频久久| 国产五月天激情小说| 操啊操av| 99热精品免费| 9有码中文| 午夜一区| 五月婷婷丁香综合,亚洲天堂| 欧美三日本三级少妇三99| 久久人人九九| 五月天激情AV| 欧美大片免费观看| 97久久超碰| 久久国产性爱A V| 色五月婷婷丁香婷婷| 五月天婷婷婷| 三级av在线| 亚洲AV成人无码电影| 99热国产精品| 亚洲九九视频| 五月停停大香蕉| 91丨九色丨国产在线| 9操在线| 伊人五月久久| 99久热这里只有精品| 四川BBB搡BBB爽爽视频| 99热在线爱| 日日操夜夜骑| Av中文在线| 成人短视频在线观看| 婷婷婷五月天最新综合你懂的| 色五月婷婷网| 五月情涩综合婷婷| 日本熟女内射| 五月婷婷av在线| 国产成人AV在线| 婷婷丁香综合| 天天肏在线视频| 色婷婷香蕉| 十月丁香九月婷婷综合| 伊人超碰在线| 99精在线| 一起草av在线观看| 色五月婷婷亚洲最大| 男女啪啪做爰高潮无遮挡| 啪啪操超碰| 婷婷五月丁香网| 欧美槡BBBB槡BBB少妇| 久久久久久久久99精品| 99超级碰碰| 99re免费视频| 色五月天成人| 极品另类| 婷婷五月天激情电影| 亚洲成人精品三区| 六月激情久久| 色噜噜狠狠色综合网| 啪啪小说五月天| av免费在线看不卡无毒| 色五月综合网| 丁香激情五月天| AV79| 碰碰碰91| 人人摸人人操人人爽| 久久丁香婷婷五月| Av大香蕉| 99在线观看视频精品| 天堂久久精品| 天天天操天天天爰| 亚洲精品第一色色色色色色| 亚洲 五月 婷婷 成人| 成人中文网| 亚洲色婷婷99一9|| 五月丁香狠狠爱婷婷综合| 婷婷五月丁香五月天| 精品成人无码A片观看香草视频| 99超在线| 午夜在线成人网站免费观看| 婷婷久久色| jiuse91在线| 婷婷综合五月天亚洲综合| 精品自拍99| 婷婷丁香激情综合色情| 日韩AV在线免费观看| 丁香五月天激情综合| 久久在线视频免费观看| 影音先锋AV男人站| 成人网站免费在线播放| 久久综合热17c| 国产黄大片在线观看画质优化| 欧美天天综合网站上去吧| 亚洲AV成人在线| 另类图片激情五月天| 精品影院| 久久精品系列| 操操操www.com| 五月天婷婷在线播放| 噜综合| 日本欧美成人片AAAA| 五月欧美色色五月| 亚洲成人超碰| 草了bav视频在线观看| 国语精品探花| 综合网色| 99久久終合| 婷婷综合一二三| 桃色五月婷婷| 99啪在线视频| 被强行糟蹋的女人A片| 99热这里只有精品官网| jiujiu热在线视频| 丁香社92视频| 九九伊人网| 婷婷丁香在线播放| 欧美色骚婷婷五月天| 激情玖玖综合网| 国产.亚洲.欧洲视频在线| 再綫Av免费視品| WWW色色色COM| 噼里啪啦在线观看免费完整版视频| 五月丁香六月婷婷手机无线| 婷婷五月花| 精品夜夜澡人妻无码AV| 五月色色网| 黄色99网| 色婷婷99| 另类A片| 无码人妻少妇色欲AV一区二区| 五月婷婷色五月| 天天日,天天射,天天插| 色域五月婷婷丁香| 99热在线网站| 五月天久久小说| 99热在线观看| 色呦呦美女| 天天 日综合| 大伊香蕉玖玖爱| 777影视理论片大全在线观看| 强伦轩人妻一区二区电影| 久久激情视频99| 9热久久在线| 9999久久久久| 丁香五月婷婷基地| 亚洲精品99| 欧美激情综合色丁香婷婷五月天| 五月婷婷co.m| 五月丁香啪啪啪免费看| 丁香五月婷婷啪啪| 人妻aV在线| 色婷婷色丁香色欲av| 日韩无码专区| 丁香五月影院| 狠狠爱综合| 91九色无码日韩| 色婷婷五月天视频在线| www.99成人视频| 免费99情趣网视频| 色宗合,宗合网| 欧美 日韩 成人在线| 色综合99无码| 日韩有码一区| 婷婷99丁香| 99久久婷婷国产综合精品| 婷婷伊人网| 激情婷婷五月| 婷婷色网| www.丁香五月| 95精品区一区二| 久久婷婷五月天| 91久久婷婷| 97成人在线视频精品| 九九草草逼| 99热国品| 日韩有码一区| 亚洲成人在线综合| 综合狠狠伊人| 久热最新视频| 丁香五月播播| 久久东京热婷婷五月| 亚洲美女网Va| 91婷婷丁香| 玖玖综合色| 欧美99热| 欧美叉叉叉BBB网站| 国产XXXX搡XXXXX搡麻豆| 99国产精品久久久久久久久久久| 九九热狼人| 激情四射亚洲| 97久久五月丁香婷婷| www.com色播五月天| 五月婷久久草| 99色色热| 丁香五月婷老师| 能直接看的av网站| 97婷婷色| 四川BBB搡BBB爽爽视频| 99资源人人| 日韩av在线免费观看| 啪啪激情综合| 婷婷开心激情综合五月天| 91丨九色丨首页| 97人人操人人拍| 婷婷综合九月| 免费99情趣网视频| 久久丁香五月| 国产成人精品一区二三区熟女在线| 国产毛片精品一区二区色欲黄A片| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 91av传媒高清在线视频网| 精品热青草| 《久久综合九色综合97婷婷| 色情·com| 精品三区影院| 丁香五月天色婷婷| 91啦丨九色丨刺激中文| aaa丁香五月天| 狠狠狠狠狠狠草| 五月激情天天干| 久热91| 国产精品涩涩涩视频网站| 青青操成人福利| 九九热av| 开心五月婷婷婷美女| 超碰在线精品| 五月婷婷性爱网| 超碰在线精品| 色欲一二三| 五月婷婷开心网| 亚洲岛国电影| 丁香六月婷月91婷月| 色欲久久久久| 操老逼综合网| 色性综合| 婷色五月天| 黄网在线免费| 精品婷婷五月视| 五月丁香婷婷深深爱| 免费AV播放| 五月婷婷九九热| 色五月丁香一区在线| 五月色婷婷综合| 天天做天天爱| 激情综合五月| 97婷婷狠狠| 日本综合99| 亚洲夜五月| 天天日天天摸| 9色小视频在线观看| 5月婷婷视频网站综合| 五月婷婷中文字幕| 99五丁香月| 婷婷丁香色五月天久久88| 婷婷五月天综合久久| 99国产精品久久久久久久久久久| 丁香五月天无码AV| 91狠狠综合久久久久久| www.91九色| 蜘蛛女侠2003满天星免费观看| 欧美顶级少妇做爰HD| 九九99免费视频| 久久爱婷婷| 97色精品视频 | 婷婷五月丁香久久| 九月丁香婷婷基地| 婷婷丁香五月天亚洲| 国产成人亚洲综合A∨婷婷| 色吊丝av中文字幕| 激情五月开心五月丁香五月| 婷婷综合在线网| 丁香五月瑟瑟| 亚洲精品久久久久久久久久吃药| 五月天日日操夜夜操 | 99精品女人天堂| 可以免费看的av网站| 五月花婷婷| 激情综合婷婷五月| 国产全是老熟女太爽了| wwwC0maV五月花| 9色91视频| 噜噜噜噜在线| 操逼五月婷婷| 激情www| 丁香婷婷六月| 五月激情影院| 99精品久久| 久久久网站| 久久久91| 国产日韩欧美| 婷婷五月天在线观看免费| 影音先锋一区二区资源站| 色婷婷色情| 九九9久九9国产视频| 久久精品永久免费| 色婷婷啪啪综合网| AV色婷婷| 狠狠色丁婷婷日日,伊人激情综合网 | 天天舔天天操| 99超级碰免费视频| 51精品国自产在线| 日本五月婷婷| 婷婷五月综合久久中文字幕| 婷香五月| 玖玖爱伊人网| 久久精品99久久久久久| sS丁香五月婷婷| JAPANRCEP老熟妇乱子伦视频| 密乳视频| 色婷婷综合久久久久| 激情 五月 婷婷 丁香| 99热最新| 婷婷五月六月丁香| 狠狠色婷婷7| 专区无日本视频高清8| 视色综合| 久久久999精品| 91欧美| 狠狠色 综合色区| 久久综合色五月| 99久久极情精品一区| 国产日日夜夜操| 色吊丝av中文字幕| 99热亚洲| 五月婷婷|欧美| 深爱五月激情网| 国产综合A片| 丁香婷婷网| 亚洲丁香五月天在线视频| 午夜福利成人AV91| 免费看成人AA片无码视频吃奶| 日韩在线aaa| 婷婷久久性爱| 婷婷天堂综合网| 色色综合网站| 激情综合一| 国内裸舞二区| 丁香激情网| 五月伊人91| 丁香色色色| 五月色精品| 色婷婷激情| 五月丁香啪啪激情| 亚洲超碰在线| 噜噜操操| 久久久这里有精品| 丁香婷婷久久老熟女综合网| 久久丁香五月综合六月激情红杏视频 | 操婷婷基地| 99综合免费视频| 亚洲色五月| 色青五月天| 超碰在线成人| 亚洲成人网站在线播放| 久久精99| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 婷婷激情小说网| 涩 五月 婷婷 狠狠| 人妻丰满精品一区二区A片| 激情九月综合| 中文色婷婷| 天天日日夜夜爽。| SESE无码AV| 丁香婷婷五月天亚洲| 婷婷综合视频| www.综合久久.com| 国产4P视频精品五区| 中文字幕中文有码在线| 粉嫩AV久久一区二区三区| 97碰碰人人| 可以免费观看的AV| 第四色大香蕉| 五月丁香91| 十一月婷婷激情四射| 人人做人人看人人摸| 美臀自射自家人妻| 色天天久婷婷| 射久久丁香五月| 久久er99热精品一区二区 | 国产毛片欧美毛片久久久| 99色天堂| 久热九九| XX色综合| 影音先锋男人AV资源站| 9999热精品| 日韩AV中文字幕在线| 97成人丁香| 182tv992tv人之初午夜免费观看 | 久久婷婷五月综合成人d啪| 久xxxx| www.久久爱.c n| 激情碰碰碰| 99re免费视频| 91九色在线| 香蕉综合网| 这里有精品99| AV 3P| 天天爽天天透天天爱| 九九免费在线视频| 色 色 色综合com| 99色视频在线| 色色射| 久久激情视频| WWW色色色COM| 六月婷婷激情图片| 色天天综合色| 六月丁香五月天| 色碰碰| 九九视频在线| 刘玥精品一区| 91成人看片| 日本精品在线噜噜噜| 婷婷丁香水多多视频| 欧美婷婷五月天综合| 丁香五月婷综合网| 思思热99热| 熟女人妻一区二区三区免费看| 九九九九九九热| 狠狠干在线| 性爱动图国产麻豆一区二区三区| 久热视频这里只有精品68| 免费视频这里只有精品| 久婷五月| 97综合视频在线| 日韩精品一区二区亚洲AV观看| 99re99在线看| 国产偷人妻精品一区| 成人av免费观看| 五月天婷婷婷| 99综合视频一体| 精品怡红九九九| 久久婷婷久久| 热99视频精品在线| 丁香成人五月天| 丁香欧美| 色噜噜狠狠一区二区三区| 色图亚洲91| 另类激情五月| VfJxEwPH| 久久精品国产一区二区三区四区| 久久超视频| 青青草蜜臀| 99热最新精品| 免费观看2018www黄色操逼网站| 丁香五月婷婷深爱综合激情| 天天做天天爱天天玩| 国产精自产拍久久久久久蜜| www.色色五月天.com| 成人网丁香五月| 狠狠丁香| 五月丁香六月婷婷久久| 色婷五月| 国产精品涩涩涩视频网站| 大伊香蕉玖玖爱| 亚州视频九九99| 另类图片天天影视在线观看| 婷婷五月中文字幕| 亚洲成人人人操| 国产精产国品一二三在观看| 大香蕉婷婷| 五夜丁香| 色婷婷国产精品综合在线观看| 婷激情五月| 激情综合亚洲| 婷婷五月综合在线| 综合久久影院| 丝袜激情网| 综合五月婷婷| 91在线观看www| 婷婷六月色情| 无码激情AAAAA片-区区| 欧美日韩大黄| 五月婷婷六月丁香| 六月99天天婷婷激情综合| 丁香五月六月综合激情| 4399伦理午夜| 任你操精品免费| 综合久久五月天| 九九精品丁香花| 五月丁香六月婷婷a v| 狠狠干,狠狠操| 色九月| 超碰激情网| 大香蕉婷婷丁香| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 国产无遮挡又黄又爽免费网站| 91狠狠综合久久| 99a级片| 香蕉久久六月| 五月丁香激情综合| 久久66er久久| XX色综合| 色原狠狠综合| 狠狠操狠狠插| 日本九九视频| 激情综合色| 亚洲综合丁香五月天| 婷婷五月丁香99| 国产午夜一区二区三区| www.天天干| 丁香五月天狠狠操| 色情综合网| WWW,色五月| 久久久婷| 欧美爆乳一区二区三区| 激情久久丁香| 日日操日日撸| 五月丁香色婷婷熟女| 97男人天堂| 丁香婷婷性久久| 粉嫩av蜜桃av蜜臀av| 九月色婷婷| 人人色性网| 激情五月天。| www.maotanji.com| 激情婷婷色小说| 超碰只有精品在线| 99热国产免费| 九九热这里只有精品556| 免费观看欧美成人AA片爱我多深| 久久99性爱| 色你久久| 99国产在线精品视频| 久久色五月天激情小说| 欧洲综合视频| 男人操女人高潮91视频| 久久久久久人妻| 丁香五月天啪啪| 久久久99精品免费观看| 天天射影院| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 综合网激情| 狠狠色综合网| 久热精品免费视频4| 天天做天天爱| 狠狠干总合| 91婷婷在线观看| 狠狠色噜噜狠狠狠888| 天天射夜夜骑| www.99热视频| 99热人人操人人操| 五月丁香啪啪网| 婷婷五月综合激情免费| 99这里有精品视频3| 丁香婷婷久久综合在线| 开心五月婷婷| 成人在线视频网| 五月综合六月婷婷| 天天天操天天天爰| 生活片五区| 日韩成人影片网站| 色色色色网| 五月婷婷六月丁香综合在线| 婷婷丁香成人在线视频| 超碰男人色| 丁香五月天大香蕉啪啪| 五月丁香网站| 色射影院| 五月婷婷丁香五月 | 噜噜噜噜婷婷五月天| 无码人妻一区二区一牛影视| 777米奇影视第四色| 97人凄人人操人人爽| 国语精品探花| 内射激情在线| 99热这里在线精品| 草草操操| 激情99热| 久久久五月婷婷| 丁香五月激情五月色综合| 欧美大肥婆大肥BBBBB| 91操熟女| 91九色国产在线| 丁香五月婷婷日本| 色吧五月婷婷| 这里只有精品视频99| 色五月天成人在线| 白天AV月月| 激情文学天天| 久久五月天合网| 色五月综合激情| 激情久久久久久久久久久| 大香蕉伊在| 殴美97色| 九热视频免费观看| 色综合色综合色综合| 久久曰9| 婷婷情色开心五月天99| 午夜不卡久久精品无码免费 | 日韩精品在线观看9| 五月丁香六月片| 成人美女网| 国产精产国品一二三在观看| 一本色道久久88加勒比| 九九综合九| 玖玖婷婷色欲| 玖玖热99| www.综合久久.com| 欧美大香蕉视频| www.henhenl| 五月激情六月宗合| 婷婷六月天| 成人电影AV在线观看| 超碰色色综合| 天天弄天天操| 国产精品成人AV在线观看春天 | eeuss人妻| 99热在线免费观看精品| wwwxxx五月婷婷小说| 九九精品在线网| 久久婷婷成人综合色怡春院| 天天爱综合网| 五月婷婷性爱| 狠狠精品干练久久久无码中文字幕| 色五月婷婷五月天| www.ywav| 五月婷婷影| 综合五月草| 东北婷婷五月天| 婷婷噜噜| 激情综合久久| 大香蕉220| 亚洲第一影院高清无码网站| 9热精品| 色婷婷五月六月丁香综合视频| 99热精这里只有精品| www.com五月天| 婷婷丁香在线| 狠狠一日| 久久停停超碰| 色婷婷六月开心中文字| 色色色网站| 丁香成人五月天| 五月天色色色网| 91碰| 这里只有精品视频一区| 五月天丁香成人| 成人午夜天| 超碰国产在线观看| 狠狠色性| 狼人婷婷久久| 黄色片avv| 久9热| 五月天另类图片| 99热免费精品| 激情婷婷视频在线| 色噜噜狠狠色综合日日免费| 久久WW| chaopengdaxiangjiao| 色综合中文色综合网| 婷婷激情鹿城五月天| 天天日天天舔| 久久视9精| 9久热| 79精品视频| 婷婷激情五月| 91操熟女| 四月丁香五月婷婷久久| 国产小精品| 欧美久久婷婷| 狠狠狠狠狠干| 久久国产成人9999久久久久| 888精品福利地址| 五月天社区婷婷丁香社区| 久久一级AV| 激情五月婷黄版| www.狠狠操| 91视屏在线观看com.wwwvv| 久久婷婷五月天激情四射| 婷婷五月丁香综合网| 日日天天天| 午夜成人AV在线| 日韩无码人妻一区二区| 色色亚卅| 福利视频在线播放| 做爱夜夜干天天操| 大香蕉久| 久久五月激情综合| 激情www| 久热re视频在线观看网站| 99热这是里只有精品| 超碰91在线| 婷婷五月丁香综合激情| 丁香五月在线观看| 精品国产a| 国产成人+亚洲+欧洲| 精品夜夜澡人妻无码AV| 五月激情精品视频| 久久丁香| 五月婷婷狠天天色综合| 91丨九色丨东北熟女| 玖玖视频福利| 天天玩夜夜操| 色色日韩网| 91精品91久久久中77777| 五月色色网| 丁香五月色色| 婷婷五月天色色| 丁香五月天网站| 99热免费精品| 无码激情| 在线观看五月婷婷网| 日日天天干| 久久五月天婷婷视频| 狠狠干天天日| 婷婷综合五月天激情| 精品一二三区久久AAA片| 国产色婷婷亚洲| 怡红院AV亚洲一区二区三区H| 五月夜丁香| 伊人网色婷婷五月天| 亚洲色vA| 91操屁股| 亚洲天堂啪啪| 一起草av| 亚洲精品无人区| 色婷婷先锋| 丁香五月婷婷高清| 色丁香五月| 丁香久久| 99热热热99精品婷婷| 激情婷婷五月天日本系列| 人人干人人操外国| 性生活视频98791| 99在线观看视频免费| 大战熟女丰满人妻AV| 这里只有精品9| 五月婷婷九| 婷婷色五月天在线观看| 99成人精品六| 丁香伊人五月色婷婷五十路 | 天天日天天色| 亭亭五月激情亚洲在线| 综合玖玖偷拍| 日韩另类| 天堂草在线看www| 9l视频自拍9l视频自拍九色学生| 久久久精品人妻| 激情综合网 激情五月天| 激情五月天第四色| 久久五月天婷婷| 天天摸日日舔狠狠添婷婷婷| 婷婷色偷拍| www色五月| www.色擼擼.com| 99re视频在线播放| 666555。COm毛片| 色五月大| 丁香婷婷五月天色播| 婷婷激情五月天小说| 婷婷五月色天| 综合激情视频| 久久在线视频只有这里有精品| 色色色色色日韩午夜激情 | 思思99精品视频| 激情综合婷婷久久| 天天爽天天干| 婷婷五月色激情欧美激情| 欧美天天五月丁香免费观看| 成人AV综合在线| 六月丁丁香| 欧美狠狠色| 激情综合婷婷| 九九99免费视频| 影院久久久| 夜夜穞天天穞狠狠穞AV美女按摩| 欧美Va日本Va| 涩涩五| 99精品久久久久久久婷婷| 五月丁香综合精品欧美| 99九九精品| 丁香午夜天| 久久伊人日日夜夜| 97人人操人人爽| 日韩久综合| 日本91在线播放| 九九热在线精品视频| 九热免费视频| 久热视频这里只有精品| 天天看片日日夜夜| 九九色逼| 69久久99精品久久久久| 91在线看片| 久久综合久色欧美综合狠狠| 久久这里有精品| 亚洲综合草草| www.狠狠操| 亚洲激情精品| 婷婷五月天日日日干干干| 天天玩天天摸| 五月激情视频| 激情五月婷| 日韩淑女人妻luan伦激情精品一区二| 伊人狼人干| 欧美成人AAA片一区国产精品| 狠狠操综合| 97极品在线| 五月天婷婷综合免费| 欧美va欧美va差| www.五月婷婷久久.com| 激情校园 亚洲| 99热国内| 色爱99| 亚洲俩性性爱图片久久第六页| 激情色播| 思思热天天看| 久热这里只精品| 人妻久久婷婷| 色99在线视频| 97干视频| 丁香六月婷婷久久综合| 婷婷五月综合激情| 丁香五月色情| 色色综合成人网| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 思思热精品在线| 高清无码入口| 久久久婷| 欧美激情综合五月色丁香| 亚洲精品久久久无码| 538在线精品| 色婷婷伊人激情在线观看| 国产露脸150部国语对白| 内射干少妇亚洲69XXX| 亚洲色无码A片一区二区麻豆| 亚洲国产精品二二三三区| 无码激情AAAAA片-区区| caop视频| 91jiuseshunv| 婷婷色吧| 97超碰综合| 九九热这里有精品视频| 99热精品网| 综合五月天天天天天五月| 色婷婷a三区麻| 99这里只有精品99| 五月丁香婷婷免费视频| 影音先锋一区二区三区| 综合久久99| 久久精品99国产精品日本| 七月丁香五月婷婷在线| 97婷婷久久丁香| 超碰97干| 九九熱最新視頻| www.五月婷婷久久.com| 色五月第四色| 丁香六月久久| 亚洲亚洲人成综合网络| 97碰碰免费.视频| caopeng97人人| 国产免费一区二区在线A片视频| 激情涩涩网| 欧美日韩AAAA| 色啪网| 岛国在线观看91| 婷婷丁香成人五月天| 久久久思思热| 亚洲亚洲永久无码777777| 超碰资源在线| 久草热8精品视频在线观看| 97碰 在线视频观看| 久久婷婷网站| 这里只有精品久| 成人电影在线免费试看| 国产成人精品一区二三区熟女在线| 91九九精品| 五月天色导航婷婷资源婷婷| 日韩操逼小电影| 婷婷色播婷婷| 伊综合蕉| 久久九九99| 开心激情播播五月天| 丁香五月婷婷影院| 亚洲成人av在线观看| 99免费视频久久| 五月色影院| 99啪啪视频| 天堂久久性| 天天舔天天插天天干| 99自拍网| 成人视频免费观看高清完整版在线观看| 成人在线精品| 婷婷丁香激情综合色情| 国产亚洲在线| 97碰碰视频在线观看| 亚洲深喉aV| 婷婷色在线| 五月丁香777| 五月天网址在线刘玥| 五月丁香啪啪啪综合网| 五月婷婷第四色| 99热这里有精品| 久草 天堂| 五月婷婷之综合激情| 三男玩一女三A片| 99日本在线| 激情五月天激情五月天| 草草女人亚洲| 激情婷婷五月亚洲| 五月激情综合网| 天综合日日夜综合7799| 5月婷婷激情6月| 久久这里只有精品热在99| 97色97干| 狠狠色成人影片| 色吧网综合| 操逼福利视频| 国产亚洲99久久精品| 日韩亚洲视频| 久操福利| 秋霞AV淫| 丁香五月激情综合| 欧美啪啪五月天| 五月丁香啪啪伦理电影| 久久ri精品| 色久五月| 欧美成人一区二区三区在线视频 | 91超级碰在线| 蜘蛛女侠2003满天星免费观看| 丁香花大香蕉婷婷综合| 开心婷婷五月花| 八戒青柠影视剧在线观看| 五月婷婷激情综合在线| 亚洲天天| 丁香五月在线人妻| 色欲一区二区三区精品A片| 99ri在线观看视频| 色婷操逼| 久九色| 激情www| 五月天激情综合在线| 婷婷天天色| 91婷婷丁香五月天免费视频网站| 丁香婷婷久久 | 五月丁香色| 大香蕉五月天婷婷| 丁香五月婷婷啪啪| 久热视频A.| www久久久| 五月丁香好婷婷姑娘综合网| www.婷婷| 艾小青av| 色yeye欧美| 日本美女五月天| 99毛片| 色欲色香综合网| se99高清无码| 欧美搡BBBBB摔BBBBB| 婷婷五月天视频在线观看| 色婷婷很很十八禁| 思思精品视频| 最新久久网址| 99热精品在线| 亚洲激情色色| 99热一本| 婷婷六月啪啪| 亚洲五月天综合色| 99精品视频免费观看近期发布| 精品免费99| 色五月大| 激情综合一| 伊人六月无码视频| 丁香九色不卡aaa| 伊人久久大香线蕉av最新| www.天天色综合| 99热热热99精品丁香| 五月丁香婷婷五月| 99热偷拍| 日韩AV免费电影在线播放| 色婷婷狠狠18| 色色综合网站| 激情性爱五月天网页| 久久婷婷婷| 99久久9| 五月天另类图片| 淫视馆AV在线| 91打屁股免费看| 天天日天天插| 久久婷婷五月草视频在线播放| a级毛片一区二区免费视频| 97热精品| 亚洲丁香五月美女| 99九九视频| 日韩精品AV一区二区三区| 欧美xx激情视频在线观看| 婷婷色五月激情| 中文字幕操比影片| 亚洲成人AV在线观看| 五月激情偷拍婷婷| 色色激情五月| yazhoujiqingav| 日韩久久视频| 色五婷婷| VA五月激情在线| 97久久久免费福利网址| 色色国产| 久草大| 婷婷五月天播| 五月天丁香综合在线| 五月丁香啪啪网| 蜜桃人妻无码AV天堂三区| 五月丁香少妇网| 99热在线精品播放| 人妻视频一区而且二区| 色色色热| 999久久久国产精品| 欧美视频在线观看噜噜| 久久草大香蕉| 一区二区三区四区牛| 少妇性按摩无码中文A片| 色婷六月| 婷婷色av| 都市激情五月婷婷综合| 丁香五月日韩| AV六月丁香| 亚洲乱码日产精品BD| 老司机伊人| 爱婷婷都市激情| 性生活久久人妻| 五月激情网五月综合网| 丁香六月婷婷综合激情欧美| 九九热99精品| 五月婷三级片| 午夜少妇在线观看视频| 另类图片天天影视在线观看| 可似看的AV| 第四色婷婷五月| 色宗合,宗合网| 色愛综合网| 日本美女上人| 99人人精品| 久久久久五月丁香| 变态 另类 在线 | 看全色黄大色大片| αv中文字幕在线观| 免费黄色片子| 国产精品视频| 五月婷婷丁香六月| 婷婷五月丁香人妻无码高清| 五月天婷婷色播综合在线| 九九无码| 五月天丁香| 99热地址| 五月天婷婷在线视频| 久久曰曰| 色吧综合网| 99自拍视频在线| 99热免费精品| 超碰资源在线| 91丨九色丨白浆秘| 99热丁香| www.色婷婷.com| 中文字幕成人影视| 激情第四色| 婷婷在线视频| 五月丁香六月成人| 久久婷婷五月综合伊人| 9久久久久久久久久久| 91婷婷丁香五月| 欧美日比视频| 婷婷午夜精品久久久| 人人操人人爽成人AV| 97色色综合| 婷婷五月亚洲综合| 99自拍视频| 婷婷五月成年人| 天天干天天日日| 久久人人人人妻| 亚洲日日操| 婷婷五月天福利| 九九亚洲综合| 天天干,夜夜爽| 白人荫道BBWBBB大荫道| 丁香五月开心七月| WWW、日本色丁香、co m| 久久日韩婷婷五月| 美女网黄| 欧美99热| 色性五月天| 中文av网| 色婷婷香蕉| 丰满老熟妇BBBBB搡BBB| 激情综合色五月丁香| 天天艹| 色婷婷丁香九月| 婷婷综合| 五月丁香花免费视频| 国产性爱亚洲是图| 99热国产精品| 福利视频在线播放| 国产操逼视频网站| 在线另类视频| 深爱激情AV| 婷婷五月天免费视频| av色婷婷| 26uuu日韩| 91午夜婷婷狠狠久久综合9色| 婷婷五月综合色中文字幕| 欧美va视频| 亚洲婷婷丁香五月视频| 五月婷婷六月丁香在线| 婷色五月| 草草色情综合网| 极品色丁香| sewuyue第四色| 99久视频| 91色婷婷综合久久中文字幕二区| 久久44| 日本片日本片祼观看网站在线看中文版网页在线看| 电影《战争与艾拉》免费观看| 五月丁香基地| 丁香六月啪啪| 国产一级黄色影片,| 色色免费网站| 99色爱| 久久婷婷五月| 月丁香久久久| 日日操夜夜爽白洁| 噜噜色婷婷| 日本乱子人伦在线视频| 91丨九色|PRNY熟妇| 五月天色婷婷小说| 国产精品成人AV在线| 丁香婷婷狠狠97| 久草五月| 草综合14| 天久综合91综合首页| 成人视屏在线观看| 五月婷婷六月少妇激情| 69精品人人人人| 五月丁香久久呀| 六月丁香好婷婷| 爱射综合| 99色五月| 天天爽夜夜爽天天爽夜夜爽| 五月婷婷影院| 国产精品视频免费看| 国产日日操夜夜操的肉棒视频| 依人大香蕉| 五月天色站| 色五月婷婷婷婷| 人人摸人人| 久久最新色| 婷婷五月无码| 99国产在线精品视频| 丁香六月激| www.黄色片-久久成人国产精品在线播放-999AV| 婷婷久久色五月婷婷久久久| 免费国产VA国产免费| 婷婷射图| 婷婷五月18永久免费网站| 婷婷五月天亚洲图片| 天天干天天拍| 五月婷丁香花| 丁香婷婷网| 五月丁香激情综合啪啪| 丁香五月婷婷激情中文| 大地资源色婷婷视频在线| 狠狠搞五月天| 九月色婷婷| 51成人| 丁香五月开心亚洲| 久久 中文 日本| site:feetmall.com| 日日干四虎| 色五月丁香激情视频| 五月香婷婷| 天天插天天玩天天干| 久久性爱视频| 色婷婷成人网| 久久永久视频| 色婷婷五月天成人网| 婷婷五月天电影网| 六月婷婷最新网址| 丁香五月色五月| 色无码| 涩涩婷婷五月| 97五月天| 丁香久久久| 99爱视频| 99在线公开视频| 伊久久婷婷| 大香蕉啪啪| 激情五月天在线视频| 国产激情久久久| 深爱五月婷婷| 伊人丁香五月| 九九爱激情| 婷婷五月中文在线视频|