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
返回資訊列表
综合色五月天| 涩婷婷五月天| 91趴趴| 九九热思思| 久久人人九| 夜夜操狠狠操| 狠狠综合久久| 色色色综合色| 婷婷五月色网| 九九视频这里是精品五月| 影院久久久| 人人爱人人摸人人澡| 久久女人天堂| 在线不卡中文字幕| AV在线不卡网站| 欧美婷婷五月丁香| 婷婷欧美| 五月激情婷婷丁香天堂| 婷婷开心青青草| 97超喷视频在线观看| 久久婷婷激情| 91操网| 69er小视频| www.色色五月天.com| 色欲Av五月天| 天天玩夜夜操天天爽| 激情九月丁香婷婷| 日本片日本片祼观看网站在线看中文版网页在线看 | 东北黄色一级| 九九99精品免费播放| 精品人人操| 免费播放99性爱视频| 超碰91在线| 免费看欧美成人A片无码| 超碰激情网| 亚洲成人噜噜| 五月情婷婷| 九九热这里都是精品6| 超碰在线观看9| 九月婷婷人人操人人舔人人爱| 色无码| 色色色地址| 深爱激情网噜噜色| 色99欧洲色19| 思思精品视频| 天天在线XXX| 五月婷婷少妇之| 国产 亚洲 在线| 国产69久久久欧美黑人A片| 成人片在线播放| 久久久久久久合一狠狠做深爱| 99视频精品视频| 色婷婷伊人| 97碰碰人人视频| 嫩草免费视频| 五月天三级| 色色99| 97色片| 色婷婷激情五月天| 91综合国免费久入| 丁香五月 综合| 那里有AV网址| 五月激情婷婷播播网| 深爱激情九九五月天 | 婷婷激情五月| 欧美人与性动交CCOO| 91啪啪视频| 99久视频| 9色婷婷| www.99热国产| 日本97久久久精品| 这里只有精品偷拍| 韩国三级五月天婷婷。| 第四色五月婷婷| 欧美激情VA永久在线播放| 色婷婷色五月天| 玖玖资源站中文| 五月婷婷丁香社区| 97综合在线| 97综合在线| 色婷婷影视| 99视频在线| 色五月首页| 福利视频在线播放| 五月婷婷六月丁香五月| 久99久在线| 91综合在线| 婷婷色播婷婷| 色吊丝av中文字幕| 都市激情久久| 九九热只有精品| 夜夜爱网站| 99九九在线精品热动漫| 五月天综合在线网| 日韩中文欧美| 婷婷五月综合激情免费视频| 色色网站在线| 野外99热| 色婷婷丁香中文在线播放| 青青草成人网| 日本人妻伦在线中文字幕| 欧美在线ee日韩| 玖玖在线| 第四色婷婷丁香五月| 色五月婷婷色五月| 六月丁香久久| 亚洲综合婷婷五月| 丁香涩涩爱| 天天搡日日搡aaaaⅩ| 专区无日本视频高清8| 色九九九综合| 欧美天天综合网站上去吧| 26uuu欧美激情另类| 性色五月天| 99色这里| 日本99在线| 午夜少妇在线观看视频| 日本九九九九| 九九热视频99| 99热精品网| 在线视频色五月| 夜夜操天天爽| 超碰色热| 色亚洲婷婷| 色欲久久久久久综合网综合网| 99久在线精品| 色九月国产| 欧美激情 日韩无码 婷婷 五月天| 久久这里有精品视频在线免费观看| 91超碰在线观看| 美国少妇性做爰| 久久婷婷丁香| 伊人五月天| 亚洲中文字幕在线观看| 九九视频网| 热99免费在线| 97超级碰碰碰| 亚洲另类视频| 97伦色婷婷| 婷婷狠狠久久| 99国产精品白浆在线观看免费| 丁香五月最新地址| 免费啪啪亚州视频| 91视频精品99| 激情久久综合| 91久久婷婷| 草综合14| 九九热婷婷| 亚洲bt丁香五月天婷婷激情小说| 婷婷丁香18| 五月婷婷丁香大陆免费| 婷婷五月花| 激情综合4月| 91超级碰碰碰| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 99免费视频精品| 久久a热| 色色五月天网站| 伊人激情影院| 操逼三区| 九九热精品视频| 97福利视频| 五月婷婷与六月丁香图片激情| 葵花AV在线| 狠狠干青青草| 五月天丁香综合在线| 五月婷婷 激情五月| 欧美日本韩国亚洲| Www.狠狠| 婷色五月天| 丁香婷婷五月六月久久| 狠狠搞五月天| 9色婷婷| 久婷婷五月激情| 中文字幕在线观看视频www| 久碰视频| 久久五月婷综合| 色色综合网络| 粉嫩av懂色av蜜臀av熟妇| 26UUU欧美激情一区二区| 综合网亚洲| 9999热在线观看| 棕合影院色色| 伊人六月无码视频| 色婷婷四色| 91人操人人人操人| 爱草视频在线观看| 97久久五月丁香婷婷| 五月丁香六月成人| 人妻videos人妻高清| 六月天婷婷| 色五月婷婷丁香婷婷| 90色免费视频| 久久XX| 丁香五月天激情五月天激情五月天激情网| 亚洲婷婷性爱| 日韩aaaaa| 激情婷婷久久| H亚洲| 婷婷五月色色| 三级大香蕉网| 97操在线视频| 狠狠色九月| 丁香大香蕉| 婷婷五月丁香六月伊人网| 97在线观视频免费观看| 丁香婷婷六月天| 五月天三级| 丁香综合久久| 最近中文字幕2019视频1| 五月婷婷 激情五月| 激情六月婷婷| 狠狠狠狠狠操| 激情文学天天| wWW九九在线播放| 婷婷五月天伊人| 亚洲五月天婷婷在线| 国产ava| 激情五月天网| 这里只有精品视频99| 色999;丁香五月| 日本久久爽| 最近中文字幕2019视频1| www.婷婷,com| 日日干天天爽| 岛国av网| 玖玖伦理电影| 五月丁香色色网| 97成人丁香| 操人91| 99热只有这里才是精品| 337p大胆噜噜噜噜噜91Av| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 99热这里只有精品1025| 中文字幕婷婷五月天在线观看| 午夜一区| 91AV婷婷| 久9免费视频| 色婷五月天网站| 超碰色色综合| 超碰色婷婷| 婷婷中文字幕网站| AV中文网| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 精品国产一区二区三区四区阿崩| 婷婷五月天激情文学| 日日爽日日| 色狠狠六月| Av大香蕉| 欧美色狠婷久| 六月丁香啪| 吊色AV男人的天堂| 久久久27操| 五月婷婷六月丁香玖玖玫瑰91| 婷婷综合在线| www.色婷婷| 丁香婷在线| 6080av| 99爱这里只有精品| 青青操avbb| 亚洲小视频免费播放| 123草逼网| 色婷婷综合亚洲| www.97干视频| 99九九综合久久九九| 啪啪操操| 在线日韩视频| 色情五月天se| 婷婷五月天资源| 一本道综合网| 色婷婷丁香五月天| 人人播| 99免费热视频在线| 97色永久免费视频| 亚洲va综合va国产va中文| 色婷五月| 三级毛片视频| 五月丁香婷婷啪啪综合| 亚洲精品99| 99欧美| 天天爽成人综合网站| 99久久99热| 都市激情久久| 九九九九九九九热| 色99在线视频| 丁香六月婷| 婷婷五月天社区| 91久久久久久久| 99性视频| 久99在线| 九九九九国产| 97韩国久久电影院| www.射伊蕉婷婷| 碰碰人人漕| 97人人干| 色婷五月天综合网| 99黄色性生活| 欧美色激情四射| 久久婷婷大香蕉| 天天综合 99久久婷婷| 色婷婷婷婷| 99精品这里只有免费视频 | 激情综合综合综合| 男人综合网| 婷婷六月情| 97色色视频| 丁香五月婷婷网| 中文字幕无码人妻少妇免费视频 | 激情五月天啪啪| 天堂AV在线看| 婷婷五月天色播| 91 影音先锋| 亚洲第一av| 九九久久9 9在线观看| 97超级操操| 五月丁香| 色五婷婷在线视频| 免费无码毛片一区二区A片| 嫩草哈哈操| 91seAV| 99在线精品观看99| 激情六月婷婷| 99在线视频观看| 日本成人综合| 99色亚洲| 日日噜噜夜夜狠狠久久丁香五月| 玖玖视频福利| www.91婷婷| 日日影院 | 99九九视频| 五月丁香六月婷婷色| 色婷婷激情四射视频| 狠狠人人| 婷婷久热| 98色花堂98t.R| 毛片新网地| AV在线中文| 丁香青青五月天| 九九Av| 99免费| 成人在线精品| 性天堂久久| 秋霞三及片| 99无码| 日韩狠狠色| 成人丁香婷婷| 婷婷丁香五月基地| 丁香五月五婷| 五月色情精品| 激情深爱五月| 综合九色| Www.狠狠| 成人在线免费网址| 九九爱激情| 四虎国产精品永久在线国在线| 五月丁香六月激情综合| 丁香婷婷91在线观看视频| 99久热视频在线| 丁香五月大片| 天堂成人A片永久免费网站| 婷婷五月花| 色婷婷88| 婷婷精品免费久久| 少妇综合网| 在线视频另类| 综合激情站| www.狠狠| 玖玖婷婷五月天| 婷婷五月综合社区| 人人操人人爽成人AV| 天天日,天天干,天天操| 嫩草视频观看| 伊人啪啪网| 超碰精品在线| 少妇AB又爽又紧无码网站| 五月丁香色色综合| 久久精品A片777777| 欧美色偷偷大香| 天天插AV丝袜中| 国产操逼视频网站| 99热新网址| 亚洲视频操| 欧美色99| 99在线观看这里都是精品| 国产成人+综合亚洲+天堂| 久久久思思热| 久久色六月| 婷婷五月色丁香在线看| 久久全色| 精品色| 五月天激情偷拍| 精品国产AV色一区二区深夜久久| 天天爽夜夜爽夜爽精品| 五月丁香花视频| 91狠狠色丁香婷婷综合久久| 天天综合色综合| 中文字幕丰满乱孑伦无码专区| 婷婷激情五月天在线视频| 五月婷婷中文| AV五月丁香| 曰韩少妇内射免费播放| 狠狠色综合精品视频在线| 欧美伊人9| 欧美一级色| 天天成人综合| 91九色 婷婷| 五月天亭亭俺也| 婷婷深爱色五月| 天天综合网色欲香| 色五月综合在线| 成人视频九九| 欧美性久| 精品成人在线| eeuss人妻| 开心五月网| 99热在线免费观看精品| 91色吧网| 色爆五月| 六月婷婷五月天| 开心五月婷| 国产av影片| 日韩中文字幕| Av大香蕉| 欧美激情VA永久在线播放| 亚洲人妻Av| 91婷婷| 亚洲丁香五月| wwxx日本| 成人一级片| 青青草原亚洲久| 久操大香蕉| 色婷婷激情小说网| 成人av免费观看| 丁香五月婷婷社区| 97精品综合久久| 永久无码色| 涩涩激情五月婷婷| 色99色| 久草热在线视频| 天天插夜夜爽| 亚韩在线视频| 伊人玖玖网| 天天揷综合网| 丁香五月AV| 思思久久青草热| 蜜乳9188| 99在线免费视频| 性色九九| 狠狠五月婷婷| 久热 91| 九九热9| 99热在线观看| 99热这里只有精品22| 欧美综合激情五月丁香| 五月丁香久久综合| 丁香九月综合| 五月天色色色色色| 久久婷婷东京热大香樵| 在线一起草av| 操逼五月天| 色色五月婷婷网| 丁香婷婷五月综合色情| 亚洲av成人在线| 亚洲色婷婷| 久99久热只有精品国产99| bbwcuckold精品熟妇| 久久精典| 噜噜色天天开心| AV在线观看网站| 91艹人| 亚洲av无码精品色午夜| 五月久久婷婷天堂视频| 丁香久久五月婷综合| 伊人久久大香天蕉亚洲特级| 狠狠久综合| 国产免费av网站| 影音先锋日本三级资源| 97婷婷五月丁香| 婷婷大香焦| 一本到不卡高清DVD| 激情 久久 婷婷| 99精品丁香五月| 五月激情小说| 婷婷五月天网| 久久无码成人| 超热久碰.com| 中文字幕不卡+婷婷五月| 日本啪啪网| 91精品91久久久中77777| 五月婷婷啪| www,8050,午夜三级| 激情丁香婷婷五月天| 亚洲性爱99| 又大又粗九一在线| 久久综合图片| 午夜天堂一区人妻| 国产精品涩涩涩视频网站| 午夜不卡久久精品无码免费| 天天躁日日躁狠狠躁日日躁2022年5月9日 | 九九AV在线| 五月婷婷激情五月| 亚洲va综合va国产va中文| 99色在线| 丁香五月婷婷影院| 婷婷亚洲综合| 日日操,夜夜撸| av性爱在线| 99热色精品| 思思re99视频在线观看| 99这里只有| 久久人妻超碰一区| 天天网曰日曰夜夜综合永久免费| 91九色精品女同系列| 九九色99| 色五月天本日| 色婷婷香蕉| 色婷婷狠狠久久综合五月 | 婷婷五月丁香综合亚洲| 五月丁香综合啪啪啪啪啪| w婷婷五月婷婷w| 日韩在线一级| 丰满少妇猛烈A片免费看观看 | 91无码高清| 久久ww| av一区免费看| 婷婷五月综合社区| 夜夜做夜夜愛| 亚洲天堂色色| 99热九九在线| 五月婷婷伊人网| 拳交大逼| 538在线精品| 亚洲六月色婷婷| 五月婷婷狠狠干| www.五月丁香av| 开心激情播播五月天| 成人看片网站| 久久婷婷五月综合网| 色色丁香五月天| caobi四区| 亚洲av网址| 梁铮版《蜘蛛女侠》在线| 久久只有这里精品免费| 综合啪啪| 香蕉五月婷婷| AV国产有码| 狠狠干婷婷| 五月婷婷,六月婷婷| 色五月xxx| 精品99在线| 99ri6在线视频| 天堂久久大香蕉| sewuyuejiqingwang| 91天天操天天干天天射| 熟女91九色| 华人在线免费| 日本44久久在线| 精品色情一区二区三区四区| 免费观看的av| 久久久婷婷五月天| 婷婷激情蜜桃玖玖丁香| 五月丁香激情综合| 色狠狠五月天| 开心激情网五月天| 五月婷婷欧美| 九九热精品视频| 超碰九热| 欧美啄木乌丝袜人妻系列| 天天做天天爱| 婷婷六月丁香激情综合| 99无码视频| 99er这里只有精品视频| 99热国产免费| 夜夜操夜夜爽| 操操啪| 情色五月天网站| 99热99极品观看| 婷婷五月成人社区| 午夜性爱影视一区77| 另类天堂| 婷婷久久久| 久久久精品色| 色色色视频免费无码 | 欧美成综合在线观看| AV79| 六月婷婷综合| 婷婷五月天激情综合| 婷婷五月AV| 精品婷婷| 久草婷婷| 五月色婷婷激情| 五月婷婷久久网| 99日这里只有精品| 91精品综合久久婷婷九色| 国产成人AV在线播放| 人妻精品在线| 亚洲操操操| 91狠狠综合久久久久久| 99熟女| 五月婷婷在线短视频| 六月婷婷色综合| 欧美婷婷五月激情| 99ri国产精品| 91大神操美女| 天天摸夜夜爽天天做| 日韩啪啪视品| 超碰人人艹| 在线国产精品色| 久久综合九色综合97婷婷| 五月婷婷综合潮喷| 91人操| 俺去也综合| 五月丁香六月婷婷不卡免费无码 | 色5月婷婷| 成人资源在线| 日本一级一片免费视频| 久久伊人婷婷| 婷婷综合中文| 激情久久肏屄视频| 99热这里只有精品2016| 任你爽在线视频| 99爱免费视频在线观看| 久久99精品久久久久子伦| AV在线中文| 毛片网站谁有| 热婷婷久| 色99在线| 久碰婷婷视频| 九九九九九九九热| 超碰人人射| 噢美99| 婷婷五月天激情网| 色婷婷色五月天| 色婷婷丁香五月| 色五月 婷婷, 大香蕉| 日亚二欧美| 熟女五月天久久综合| 亚洲一二三网| 五月激情五月丁香| 日本三级片片| 97在线观视频免费观看| 日韩另类| 99热这里有精品| 久久多色| 成人 九九九九| VA色婷婷| 天天日天天草| 99视频精品8 | www色五月天| 色啪影院| 五月天丁香婷婷社区| 色五月激情五月| 丁香九月婷婷色| 丁香婷婷五月激情综合| 久色激情| 婷婷香蕉视频| 婷婷五月综合视频| 热99这里只是精品| www99在线观看视频| 免费观看全黄做爰的视频| 超碰精品在线| 激情图片婷婷丁香五月| 人妻久久久久久久 | 综合久久人妻| 天天日天天操天天干| 久久久久妻| 大香人妻| 天堂网亚洲色图| 91操人人操| 亚洲综合另类| 色五月综合网| 丁香五月先锋| 七七色色综合| 婷婷丁香五月激情密臀av| 久久五月天色| 26UUU欧美| 亚洲精品小视频| 97婷婷丁香五月天激情图片| 婷婷欧美色| 色婷婷中文字母五月丁香| 色性综合| 天天色天天爽| 综合激情五月综合激情五月激情1 天天爱天天做天天舔 | 九九香蕉网| 综合AV在线| 九九九九九九九九九九九九九国产精品| 色综合久久中文| 啪啪啪啪五月天| 久久996re热这里只有精品无码| 六月丁香色色色| 狠狠干婷婷| 日本美女上人| 狠狠狠狠狠狠草| 性爱激情久久| 五月婷婷香| 亚洲天堂啪啪| 99精品视频在线观看| 99在线国| 婷婷99狠狠躁天天躁中文| 九九99免费理论| 激情的五月婷婷蜜桃| 中文字幕免费高清电视剧| 五月丁香六月花| 五月婷婷丁香网| 亚洲色色香蕉| 丁香激情网| 777米奇影视第四色| 婷婷五月深爱五月| 欧美在线操| 熟妇无码乱子成人精品| 亚洲欧美一区二区三区四区爱爱动图| 久操干| 99久久婷婷| 婷婷色爱| 婷婷综合久久| 婷婷桃色网| 色婷婷AAA| 婷婷六月天精品| 五月香蕉网| 婷婷激情图片| 五月丁香色五月| 《久久综合九色综合97婷婷| 久热婷婷| 婷婷五月天天爽| 国产色色网址网站| 天堂久久大香蕉| 九九久久99| 日本成人噜噜噜| 97人凄人人操人人爽| 五月综合激情婷婷六月色窝| 色五月五月婷婷| 五月丁香狠狠爱| 丁香五月色激情| 996er热| 综合图区激情| 天天做综合| 九九色天堂| 综合色色色| 五月天伊人网| 操嫩逼电影| 亚洲中文字幕av| 色婷婷AV在线观看| 国产暴力强伦轩1区二区小说| 五月综合色| 五月婷婷开心亚洲无| 男人天堂 久久| 免看黄大片AA | 色色无码| 五月婷婷激情久久| 六月丁香婷婷天堂| 欧美婷婷丁香五月| 伊人99热| 九九色热| 婷婷玖玖五月天| 中文国产五月天| 欧美日本免费一道免费视频| 天天色播| 色婷婷色99国产综合精品| 色六月天| 日日婷婷不卡| 五月天久久综合| 色五月婷婷天堂| 天天久综合网永久入口18| 激情綜合W W W,激情五月天| 国产色网站| 丁香五月六月久久综合 | 色婷婷久久| 天天操无码| 亚洲最大激情无码| 骚。com| 五月丁香色婷| 26uuu国产精品| 天堂爱爱| 伊人五月天日日夜夜久久久天天| 丁香五月中文字幕| 91精品综合久久婷婷九色| 久热丁香| 中文字幕激情综合| 欧美日韩日韩成人| 天综合日日夜综合7799| 婷婷六月久久| 色色色色色色色色色色色色色色,网站| 99国产精品久久久久久久久久久| 五月激情六月综合| 婷婷精品| 色播综合| www.色婷婷| 国产亚洲精品久久久久久牛牛| 26uuu精品一区二区| 久99热| 人妻中文在线| 欧美性丁香色色五月天干干| AV操操操| 日本高清久久| 国产午夜精品一区二区三区四区| 国自产拍偷拍精品啪啪一区二区| 婷婷久久色| 人妻久热| 看全色黄大色大片| 六月婷婷久久| www超碰| 99热这里全都是精品| 天天干天天操天天爽| 色99自拍| 五月激情偷拍| 五月婷婷六月丁香综合| 综合色久| 欧洲激情五月天婷婷| 五月综合久久| oumeisesewang| 伊人六月无码视频| 天干干夜夜操| 五月花婷婷最新| 日本欧美国产| 日本熟女一区二区| 99久在线精品99re8热| 婷婷五月丁香高清无码| 天天爽夜夜爽夜爽精品| 婷婷六月啪啪| 激情五月天电影| 秋霞少妇AV网站| 丁香五月婷婷高清| yellow视频在线观看91| www.25五月婷婷| 五月婷婷插一插| 九九热99热| 欧美日韩成人一区二区| 另类在线| 亚洲乱码日产精品BD在线观看 | 另类 在线| www.天天干.com| 国产色五月| 色婷婷综合网站| 亚洲欧洲中文日韩久久AV乱码| 婷婷字幕在线| 婷婷99视频精品| VA婷婷| 色约约视频一区二区三区四区五区 | 亚洲av骚货| 五月婷婷免费看| 丁香五月婷婷亚洲人| 九九色婷| 激情五月综合网| 九九热99热| 婷婷五月天伊人在线| 夜夜AVV| 久操热线| 天天操综合网| www夜夜操wwwcon| 91chinese在线| 综合五月丁香97| 少妇人妻偷人精品无码视频新浪 | 久久婷婷伊人| www激情婷婷com| 婷婷久久视频| 99九九热在线观看| 狠狠色噜噜狠狠狠狠狠色综合久久| 九九碰九九爱97| 激情综合激情五月一起草| 激情五月天婷婷免费观看| 五月综合丁| 久热婷婷| 丁香五月成人社区| 99热资源在线| 色六月视频| 色狠狠999综合网| 五月天婷婷爱| WWW、日本色丁香、co m| 影音先锋自拍网| 激情影院丁香五月| 五月婷在线| 日本在线99| 五月婷婷五月天亚洲无码| 五月婷婷六月丁香激情深爱| 激情综合网激情五月天| 亚洲中文字幕在线观看| 五月婷婷性爱| 日本三级中国三级99人妇网站| 视频这里只有精品16| 五月天激情综合网俺也去| 九月色婷婷综合| 五月丁香六月婷婷的女人| 丁香六月成人| 丁香五月综合| WWW.婷婷| 色婷婷视频在线| 婷婷五月花| 91色逼| 天天干天天干天天干| 色五月丁香五月| 六月 丁香 视频| 一起草性爱不卡视频| 狠色狠色综合久久| 色性日本| 久久成人天| 丁香六月激情蜜桃| 欧美丁香婷婷天天操| 日本综合久久| 色综合久久888| 99这里有精品视频3| 九九精品在线视频观看| 五月婷婷激情在线| 久久激情四射| 超碰免费电影| 婷婷综合在线播放| 五月天婷婷爱| 99er热精品视频| 二级黄色毛片| 婷婷九月综合| 九九色热| 日日干日日色| 99热久久这里只有精品| 五月情综合| 涩五月丁香| 色婷婷狠狠| 97在线/亚洲| 五月天色五月| 亚洲色无码A片一区二区麻豆| 国产成人AV| 在线播放 精品| 大香蕉娱乐| 五月丁香大相交| 少妇激情基地| 五月花成人网| 丁香五月天狠狠| 99爱爱| 强辱丰满人妻HD中文字幕| 大香蕉久久视频久久视频 | www99xxxx五月丁| 亚洲人成网站999综合| 99热久97| 99热国品免费| WWW.夜夜| 99热大全在线观看| 26UUU欧美| 日韩人妻无码专区| 色色热| 99啪啪| 99色| 丁香五月婷婷无码AV| 4399成人黄A片| 97操在线视频| 香蕉久久国产AV一区二区| 99热九九这里只有精品| 中文字幕在线观看视频www| 思思久久96热在精品国产,| 玖玖色综合色| 婷婷五月天成人五月天| 强辱丰满人妻HD中文字幕| 五月丁香啪啪激情| 五月丁香色色网| 99热精品10| 丁香五月天AV在线| 国产精品美女| 国产日产成人亚洲欧美国产VA| 天堂久久性| 婷婷五月在线免费| 强壮的公次次弄得我高潮A片日本 | 极品人妻videosss人妻| 久草婷婷视频| 99操久久| 五月情综合| 在线亚洲综合| 五月天精品视频| 人妻熟妇六区| 天天插天天射天天干| 色色色色色网| 色狠狠综合入口| 99黄色在线视频精品熟女| 五月天婷婷色| 99亚洲色色| 丁香五月婷婷色情综合| 成人做爰A片免费看视频| 亚洲va欧美va国产综合久久久| 日韩精品99久久| 婷婷丁香十月| 狠狠操狠狠干综合| 操人91| 蜜桃人妻无码AV天堂三区| 日日操日日撸| 99热只有精品在线播放| 五月丁香大香蕉| 丁香五月天AV| 婷婷五月激情网站| 丁香激情五月少妇| 噜噜噜久久| 五月天综合久久| 中国女人内射6XXXXX| 日熟女| 婷婷丁香六月激情综合| WWW色色色COm| 色五月婷婷777| 中文久久婷婷| 中文字幕丰满乱孑伦无码专区| 色综合9| 丁香五月天堂网| 色色色色色色网| 天天操天天操综合| 超碰猛烈的性猛交| 久久久久久久久18久久| 色五月激情| 婷婷综合六月| 激情五月深爱五月观看| 韩国97天堂| 五月丁香大香蕉| 久色激情| 99热这里只有精品1998| 色婷久久| 超碰资源在线| 久久九网| 国外亚洲成AV人片在线观看| 生活片五区| 99热综合在线观看| 黄网免费观看| 牛牛色av| 超喷97免费在线视频| 99热99在线| 天天做天天爱天天高潮| 五月天婷婷永久免费视频| 六月丁香五月激情亚洲AV| 色久影院| 婷婷五月天AV在| 一级片操逼视频| 丁香五月婷婷网| 亚洲午夜电影| 久热这里只有精品6| 亚洲VA在线| 五月丁香婷婷基地| 天天日人人| 一二线视频 另类| 五月六月激情| 综合日本婷婷| 五月婷婷熟女| 五月丁香久人妻中文| 丁香花五月天激情| 九九av| 婷婷在线精品| 99在线视频在线观看| 久月久在线视频| 日日日天天干| 亚洲成人av在线播放| 性天堂久久| 丁香密臀AV激情网| 在线中文字幕av| 久久丝袜婷婷| 五月色亚洲| 在线色五月婷婷| 日本三级99人妇网站| 婷婷国产成人| 91九色PORNY大屁股| 色亭亭五月天丁香综合AV - 百度 - 百度| 伊人9在线| 涩五月婷婷| 日本激情五月| 欧美WW在线网| 色婷婷久久| 亚洲丁香五月在线观看| AV色婷婷| 激情综合五月婷婷| 六月婷婷九月丁香亚洲综合| 超碰在线综合| 超碰成人免费| 色综合色综合色综合| 九九大香视频| 婷婷久久性爱| 99亚洲天堂| 97色在线| 五夜婷婷| 久久九九视频网站| 婷婷五月色播网| 亚洲综合1024| 丁香六月婷婷综情欧美| 色情婷婷| 蜜乳9188| 99热99思午夜精品| 伊人天天色| 99这里有精品视频视频| 五月婷婷综合在线视频小说| 丁香五月在线视频黑人| 色操b| WWW、日本色丁香、co m| 色丁香六月| 婷婷五月天激情综合网| 中文av网| 日本颜色视频人人爱| 思思热在线观看| 亚洲啪啪视频| 九九碰九九爱97超| 超碰在线成人| 日韩久久成人| 久久婷中文字幕| 综合久久9| 樱花99视频| 欧洲综合色| 国产乱妇乱子伦| 色色色热| 色五月天婷婷| 天天色综网| 超碰国产在线观看| 婷婷六月色开| 婷婷丁香高潮了| 成人综合伍月天| 丁香婷婷九月| 婷婷久久综合| 五月天综合色| 狠狠久久婷五月| 久久五月婷婷开心网| 99爱视频在线观看这里只有精品| 97久久超碰| 成人做爰黄A片免费看直播室男男| 五月婷婷先锋| 狼友视频在线观看18| jiujiu无码五区| 五月丁香六月激情综合欧美| 九九色精品| 在线成人va| 天堂中文国产| 婷婷激情丁香五月天综合| 国产精品蜜臀99| 久久五月视频| 色婷婷综合久久| 久久九九爽| 天天擼久久擼在线| 久久性爱视频| 蜜桃婷婷丁香综合久久开心亚洲| 久久图色4| 98毛片| 夜夜撸天天日| 亚洲色综合| 色色色1网址| WWW.天天日| 九九热这里只有精品6| 欧美色五月| 96色婷婷| 天天操夜夜夜夜爽| 99久久这里只有精品| 成年人丁香五月| 丁香婷婷综合喷| 99精品视频免费在线播放| 五月天天天色| 久久在线视频免费观看| 激情视频综合| 5月丁香六月婷婷| 任你爽精品免费视频6| 激情婷婷丁香五月| www色五月| 色五月综合激情| 婷婷5月色| 亚洲无线视频| 男人操女人高潮91视频| 99热久草| 亚洲欧美一区二区三区四区爱爱动图| 伊人激情影院| 激情婷婷久久| 久久性爱网站| se99视频| www.色九月| 亚洲 日韩色色| 毛片新网地| 亚洲在线成人| 人妻性爱| 五月天丁香网| 久久久99免费视频| 乱色色色| 国产乱人偷精品人妻A片| 综合色播| 精品爆操| 91/九色黑人| 色欲资源网| 午夜不卡久久精品无码免费| 99精品热视频| 日日插日日干| 精品人妻午夜一区二区三区四区| 成久综合视频| 日本在线视频www色| 铁牛TV人妻| 天天色综网| 丁香六月婷婷操逼网| 五月天久久成人| 91日韩在线| 99久久精| 超碰成人电影| 色琪琪一综合久久激情五月视频| 丁香六月无码播放| 欧美人人草草| 激情丁香五月婷婷啪啪| 国产日产亚系列精品版优势| 九九免费视频在线| 人妻AV在线| 亚洲综合视频在线| 欧美日韩成人在线观看| 色婷婷狠狠18yy| 五月天婷五月天综合网在线观| 久久亚洲婷婷| 色狠狠狠干| 婷婷综合激情| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 91凹凸在线| www.黄色片-久久成人国产精品在线播放-999AV | 婷婷五月天激情综合| 91一起操| 99 热| 婷婷狠狠操| 色必久悠悠影院| 色色激情五月天| 国产日批视频| 精品少妇人妻AV无码专区偷人| 色必久悠悠影院| 荫道BBWBBB高潮潮喷| 五月天播播综合| 51精品国自产在线| 丁香六月综合| 99视频35精品视频在线观看| 婷婷中文字幕网| 天天天天干| 九热网站| 五月激情久久综合网| 狠狠久久婷婷| 天天摸天天高潮天天爽| 精品99*| 激情丁香五月天图片| 色五XX| 色婷亚洲| 久久大香蕉同僚| 六月婷婷天天操夜夜爽视频| 99精品网| 日韩av干| 精品视频网| 五月丁香色综合| 综合激情婷婷| 中文字幕乱码亚洲精品一区| 思思热99在线| 丁香六月激情毛片| 99久热在线精品| 另类激情五月天。| 日本黄色三级片内射| 婷婷丁香五月综合激情视频| 色婷婷AⅤ| 99激情网| 婷婷五月天少妇| 狠狠色噜噜狠狠| 五月天激情综合网俺也去| 欧美成人猛片AAAAAAA| 99热这里只有精品国产首页| 日本乱论99| 五月天婷婷综合网| 亚洲综合视频一下| 一区操| 97干视频| 91大屁股| 一级性爱大片| 色综合九九| 久99久热只有精品国产99| 色哟哟性爱av| 六月婷婷五月丁香| 天天摸色吧天天摸色吧| 97偷拍在线视频| 久99热| 日本成人小说婷婷六月| 五月婷婷导航| 狠狠操综合| 99这里只有精品|v| 99re在线视频精品,这里只有精品18,| 97人人干视频| 大香蕉啪啪| 亚洲五月情|