精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用TypeScript開發爬蟲程序

開發 前端
目前版本2.0.3,這個版本不再需要使用typings命令了。但是vscode捆綁的版本是1.8的,需要一些配置工作,看本文的處理辦法。

[[175063]]

全局安裝typescript:

  1. npm install -g typescript 

目前版本2.0.3,這個版本不再需要使用typings命令了。但是vscode捆綁的版本是1.8的,需要一些配置工作,看本文的處理辦法。

測試tsc命令:

  1. tsc 

創建要寫的程序項目文件夾:

  1. mkdir test-typescript-spider 

進入該文件夾:

  1. cd test-typescript-spider 

初始化項目:

  1. npm init 

安裝superagent和cheerio模塊:

  1. npm i --save superagent cheerio 

安裝對應的類型聲明模塊:

  1. npm i -s @types/superagent --save  
  2. npm i -s @types/cheerio --save  

安裝項目內的typescript(必須走這一步):

  1. npm i --save typescript 

用vscode打開項目文件夾。在該文件夾下創建tsconfig.json文件,并復制以下配置代碼進去:

  1.     "compilerOptions": { 
  2.         "target""ES6"
  3.         "module""commonjs"
  4.         "noEmitOnError"true
  5.         "noImplicitAny"true
  6.         "experimentalDecorators"true
  7.         "sourceMap"false
  8.      // "sourceRoot""./"
  9.         "outDir""./out" 
  10.     }, 
  11.     "exclude": [ 
  12.         "node_modules" 
  13.     ] 
  14.  

在vscode打開“文件”-“***項”-“工作區設置”在settings.json中加入(如果不做這個配置,vscode會在打開項目的時候提示選擇哪個版本的typescript):

  1.    "typescript.tsdk""node_modules/typescript/lib" 
  2.  

創建api.ts文件,復制以下代碼進去:

  1. import superagent = require('superagent'); 
  2. import cheerio = require('cheerio'); 
  3.  
  4. export const remote_get = function(url: string) { 
  5.  
  6.     const promise = new Promise<superagent.Response>(function (resolve, reject) { 
  7.         superagent.get(url) 
  8.             .end(function (err, res) { 
  9.                 if (!err) { 
  10.                     resolve(res); 
  11.                 } else { 
  12.                     console.log(err) 
  13.                     reject(err); 
  14.                 } 
  15.             }); 
  16.     }); 
  17.     return promise; 
  18.  

創建app.ts文件,書寫測試代碼:

  1. import api = require('./api'); 
  2. const go = async () => { 
  3.     let res = await api.remote_get('http://www.baidu.com/'); 
  4.     console.log(res.text); 
  5. go();  

執行命令:

  1. tsc 

然后:

  1. node out/app 

觀察輸出是否正確。

現在嘗試抓取http://cnodejs.org/的***頁文章鏈接。

修改app.ts文件,代碼如下:

  1. import api = require('./api'); 
  2. import cheerio = require('cheerio'); 
  3.  
  4. const go = async () => { 
  5.     const res = await api.remote_get('http://cnodejs.org/'); 
  6.     const $ = cheerio.load(res.text); 
  7.     let urls: string[] = []; 
  8.     let titles: string[] = []; 
  9.     $('.topic_title_wrapper').each((index, element) => { 
  10.         titles.push($(element).find('.topic_title').first().text().trim()); 
  11.         urls.push('http://cnodejs.org/' + $(element).find('.topic_title').first().attr('href')); 
  12.     }) 
  13.     console.log(titles, urls); 
  14. go();  

觀察輸出,文章的標題和鏈接都已獲取到了。

現在嘗試深入抓取文章內容

  1. import api = require('./api'); 
  2. import cheerio = require('cheerio'); 
  3.  
  4. const go = async () => { 
  5.     const res = await api.remote_get('http://cnodejs.org/'); 
  6.     const $ = cheerio.load(res.text); 
  7.     $('.topic_title_wrapper').each(async (index, element) => { 
  8.         let url = ('http://cnodejs.org' + $(element).find('.topic_title').first().attr('href')); 
  9.         const res_content = await api.remote_get(url); 
  10.         const $_content = cheerio.load(res_content.text); 
  11.         console.log($_content('.topic_content').first().text()); 
  12.     }) 
  13.  
  14. go();  

可以發現因為訪問服務器太迅猛,導致出現很多次503錯誤。

解決:

添加helper.ts文件:

  1. export const wait_seconds = function (senconds: number) { 
  2.     return new Promise(resolve => setTimeout(resolve, senconds * 1000)); 
  3.  

修改api.ts文件為:

  1. import superagent = require('superagent'); 
  2. import cheerio = require('cheerio'); 
  3.  
  4. export const get_index_urls = function () { 
  5.     const res = await remote_get('http://cnodejs.org/'); 
  6.     const $ = cheerio.load(res.text); 
  7.     let urls: string[] = []; 
  8.     $('.topic_title_wrapper').each(async (index, element) => { 
  9.         urls.push('http://cnodejs.org' + $(element).find('.topic_title').first().attr('href')); 
  10.     }); 
  11.     return urls; 
  12. export const get_content = async function (url: string) { 
  13.     const res = await remote_get(url); 
  14.     const $ = cheerio.load(res.text); 
  15.     return $('.topic_content').first().text(); 
  16.  
  17. export const remote_get = function (url: string) { 
  18.  
  19.     const promise = new Promise<superagent.Response>(function (resolve, reject) { 
  20.  
  21.         superagent.get(url) 
  22.             .end(function (err, res) { 
  23.                 if (!err) { 
  24.                     resolve(res); 
  25.                 } else { 
  26.                     console.log(err) 
  27.                     reject(err); 
  28.                 } 
  29.             }); 
  30.     }); 
  31.     return promise; 

修改app.ts文件為:

  1. import api = require('./api'); 
  2. import helper = require('./helper'); 
  3. import cheerio = require('cheerio'); 
  4.  
  5. const go = async () => { 
  6.     let urls = await api.get_index_urls(); 
  7.     for (let i = 0; i < urls.length; i++) { 
  8.         await helper.wait_seconds(1); 
  9.         let text = await api.get_content(urls[i]); 
  10.         console.log(text); 
  11.     } 
  12. go(); 

觀察輸出可以看到,程序實現了隔一秒再請求下一個內容頁。

現在嘗試把抓取到的東西存到數據庫中。安裝mongoose模塊:

  1. npm i mongoose --save 
  2. npm i -s @types/mongoose --save  

然后建立Scheme。先創建models文件夾:

  1. mkdir models 

在models文件夾下創建index.ts:

  1. import * as mongoose from 'mongoose'
  2.  
  3. mongoose.connect('mongodb://127.0.0.1/cnodejs_data', { 
  4.     server: { poolSize: 20 } 
  5. }, function (err) { 
  6.     if (err) { 
  7.         process.exit(1); 
  8.     } 
  9. }); 
  10.  
  11. // models 
  12. export const Article = require('./article');  

在models文件夾下創建IArticle.ts:

  1. interface IArticle { 
  2.     title: String; 
  3.     url: String; 
  4.     text: String; 
  5. export = IArticle; 

在models文件夾下創建Article.ts:

  1. import mongoose = require('mongoose'); 
  2. import IArticle = require('./IArticle'); 
  3. interface IArticleModel extends IArticle, mongoose.Document { } 
  4.  
  5. const ArticleSchema = new mongoose.Schema({ 
  6.     title: { type: String }, 
  7.     url: { type: String }, 
  8.     text: { type: String }, 
  9. }); 
  10.  
  11. const Article = mongoose.model<IArticleModel>("Article", ArticleSchema); 
  12. export = Article;  

修改api.ts為:

  1. import superagent = require('superagent'); 
  2. import cheerio = require('cheerio'); 
  3. import models = require('./models'); 
  4. const Article = models.Article; 
  5.  
  6. export const get_index_urls = async function () { 
  7.     const res = await remote_get('http://cnodejs.org/'); 
  8.  
  9.     const $ = cheerio.load(res.text); 
  10.     let urls: string[] = []; 
  11.     $('.topic_title_wrapper').each((index, element) => { 
  12.         urls.push('http://cnodejs.org' + $(element).find('.topic_title').first().attr('href')); 
  13.     }); 
  14.     return urls; 
  15.  
  16. export const fetch_content = async function (url: string) { 
  17.     const res = await remote_get(url); 
  18.  
  19.     const $ = cheerio.load(res.text); 
  20.     let article = new Article(); 
  21.     article.text = $('.topic_content').first().text(); 
  22.     article.title = $('.topic_full_title').first().text().replace('置頂''').replace('精華''').trim(); 
  23.     article.url = url; 
  24.     console.log('獲取成功:' + article.title); 
  25.     article.save(); 
  26.  
  27. export const remote_get = function (url: string) { 
  28.  
  29.     return new Promise<superagent.Response>((resolve, reject) => { 
  30.         superagent.get(url) 
  31.             .end(function (err, res) { 
  32.                 if (!err) { 
  33.                     resolve(res); 
  34.                 } else { 
  35.                     reject(err); 
  36.                 } 
  37.             }); 
  38.     }); 
  39.  

修改app.ts為:

  1. import api = require('./api'); 
  2. import helper = require('./helper'); 
  3. import cheerio = require('cheerio'); 
  4.  
  5. (async () => { 
  6.  
  7.     try { 
  8.         let urls = await api.get_index_urls(); 
  9.         for (let i = 0; i < urls.length; i++) { 
  10.             await helper.wait_seconds(1); 
  11.             await api.fetch_content(urls[i]); 
  12.         } 
  13.     } catch (err) { 
  14.         console.log(err); 
  15.     } 
  16.  
  17.     console.log('完畢!'); 
  18.  
  19. })();  

執行

  1. tsc 
  2. node out/app  

觀察輸出,并去數據庫檢查一下可以發現入庫成功了!

補充:remote_get方法的改進版,實現錯誤重試和加入代理服務器.放棄了superagent庫,用的request庫,僅供參考:

  1. //config.retries = 3; 
  2. let current_retry = config.retries || 0; 
  3. export const remote_get = async function (url: string, proxy?: string) { 
  4.     //每次請求都先稍等一下 
  5.     await wait_seconds(2); 
  6.     if (!proxy) { 
  7.         proxy = ''
  8.     } 
  9.     const promise = new Promise<string>(function (resolve, reject) { 
  10.         console.log('get: ' + url + ',  using proxy: ' + proxy); 
  11.         let options: request.CoreOptions = { 
  12.             headers: { 
  13.                 'Cookie'''
  14.                 'User-Agent''Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
  15.                 'Referer''https://www.baidu.com/' 
  16.             }, 
  17.             encoding: 'utf-8'
  18.             method: 'GET'
  19.             proxy: proxy, 
  20.             timeout: 3000, 
  21.         } 
  22.         request(url, options, async function (err, response, body) { 
  23.             console.log('got:' + url); 
  24.             if (!err) { 
  25.                 body = body.toString(); 
  26.                 current_retry = config.retries || 0; 
  27.                 console.log('bytes:' + body.length); 
  28.                 resolve(body); 
  29.             } else { 
  30.                 console.log(err); 
  31.                 if (current_retry <= 0) { 
  32.                     current_retry = config.retries || 0; 
  33.                     reject(err); 
  34.                 } else { 
  35.                     console.log('retry...(' + current_retry + ')'
  36.                     current_retry--; 
  37.                     try { 
  38.                         let body = await remote_get(url, proxy); 
  39.                         resolve(body); 
  40.                     } catch (e) { 
  41.                         reject(e); 
  42.                     } 
  43.                 } 
  44.             } 
  45.         }); 
  46.     }); 
  47.     return promise; 
  48.  

另外,IArticle.ts和Article.ts合并為一個文件,可能更好,可以參考我另一個model的寫法:

  1. import mongoose = require('mongoose'); 
  2.  
  3. interface IProxyModel { 
  4.     uri: string; 
  5.     ip: string; 
  6.     port:string; 
  7.     info:string; 
  8. export interface IProxy extends IProxyModel, mongoose.Document { } 
  9.  
  10. const ProxySchema = new mongoose.Schema({ 
  11.     uri: { type: String },// 
  12.     ip: { type: String },// 
  13.     port: { type: String },// 
  14.     info: { type: String },// 
  15. }); 
  16. export const Proxy = mongoose.model<IProxy>("Proxy", ProxySchema);  

導入的時候這么寫就行了:

  1. import { IProxy, Proxy } from './models'

其中Proxy可以用來做new、find、where之類的操作:

  1. let x = new Proxy(); 
  2. let xx = await Proxy.find({}); 
  3. let xxx = await Proxy.where('aaa',123).exec();  

而IProxy用于實體對象的傳遞,例如

  1. function xxx(p:IProxy){ 
  2.  
責任編輯:龐桂玉 來源: segmentfault
相關推薦

2021-05-08 19:16:38

Python開發Emoji

2023-07-12 08:29:58

TypeScrip元組元素

2010-02-06 14:19:26

ibmdwGoogleMap

2011-05-03 09:14:45

QtOvi商店Symbian

2011-08-31 15:15:20

PhoneGap

2010-11-18 15:52:32

QMLMeeGo

2011-01-27 17:33:10

DalvikAndroidQNX

2020-10-14 15:05:02

React應用程序

2020-10-09 07:54:43

PythonJava爬蟲

2024-11-27 06:31:02

2009-09-22 12:22:54

ibmdwLotus

2020-06-01 09:40:06

開發ReactTypeScript

2022-09-14 15:24:57

typescript快排

2020-06-03 16:50:24

TypeScriptReact前端

2021-10-11 14:28:25

TypeScript企業級應用

2024-05-31 12:31:54

C#爬蟲Python

2011-03-30 10:44:39

COBOL

2012-03-15 15:35:51

iUI框架EclipseiOS Web

2022-11-07 16:06:15

TypeScript開發技巧

2021-10-31 21:01:00

數列TypeScriptJava
點贊
收藏

51CTO技術棧公眾號

日本三级韩国三级欧美三级| 亚洲精品男人的天堂| 日韩深夜福利网站| 一区二区三区四区在线免费观看| 国产精品播放| 精品无码一区二区三区的天堂| 天天影视综合| 日韩高清欧美高清| 伊人国产精品视频| 中文字幕人成乱码在线观看 | 激情av在线播放| 久久免费电影网| 亚洲自拍偷拍色片视频| 亚洲av无码不卡| 亚洲成人在线| 日韩成人免费电影| 中文字幕一区二区三区av| 国产精品久久精品国产| 中文字幕人妻精品一区| 亚洲日本久久| 精品国内亚洲在观看18黄| 亚洲蜜桃精久久久久久久久久久久| 欧美一级网址| 一本色道久久加勒比精品| 久久视频免费在线| 97电影在线观看| 91女厕偷拍女厕偷拍高清| 亚洲最大福利视频网站| 亚洲熟妇无码久久精品| 久久激情久久| 国模私拍视频一区| 欧美成欧美va| 久久五月天小说| 亚洲欧洲日产国产网站| 久久久午夜精品福利内容| 日韩在线观看中文字幕| 在线成人午夜影院| 欧美成人黄色网址| 日韩电影大全网站| 欧美日韩中文在线| 国产人妻777人伦精品hd| 大桥未久在线播放| 亚洲精品日韩一| www.-级毛片线天内射视视| 懂色av中文在线| 久久综合成人精品亚洲另类欧美| 国产精品美女久久久久aⅴ| 久久久亚洲国产| 久草网视频在线观看| 91精品国产成人观看| 深夜成人在线观看| 黄色一级片一级片| 91影院成人| 久久九九国产精品怡红院| 日本污视频网站| 日本在线电影一区二区三区| 亚洲精品色婷婷福利天堂| 美国黄色一级毛片| 九九综合九九| 国产亚洲在线播放| 亚洲色图日韩精品| 国产精品久久观看| 不卡中文字幕av| 玖玖爱免费视频| 亚洲小说欧美另类社区| 性亚洲最疯狂xxxx高清| 欧美日韩一二三四区| 久久综合婷婷| 国产色综合天天综合网 | 国产va在线播放| 欧美日韩国产一区精品一区| 欧美日本中文字幕| 国产污视频在线看| 美女黄色成人网| 国产精品男人的天堂| 一区二区日韩在线观看| 国产精品综合一区二区| 成人免费观看网站| 水莓100在线视频| 久久精品视频网| 亚洲成人18| 午夜dj在线观看高清视频完整版| 精品高清美女精品国产区| 日本黄网站免费| 9999精品视频| 亚洲第一中文字幕| 欧美人与性囗牲恔配| 羞羞色午夜精品一区二区三区| 色综合男人天堂| 日本免费在线观看视频| 精久久久久久久久久久| 国产精成人品localhost| 日本一级在线观看| 亚洲欧美日韩成人高清在线一区| 欧美成人精品一区| 香港三级日本三级a视频| heyzo高清中文字幕在线| 色乱码一区二区三区88| 超碰91在线播放| 日韩欧美影院| 久久精品免费播放| 欧美一二三区视频| 精品亚洲欧美一区| 久久精品国产精品青草色艺| 免费在线观看黄色网| 亚洲成人中文在线| 亚洲xxx在线观看| 蜜臀av一区| 欧美精品一区二区免费| 亚洲av无码不卡| 成人美女视频在线看| 亚洲精品国产系列| 免费亚洲电影| 精品国产伦理网| 特一级黄色录像| 日韩主播视频在线| 国产精品日韩一区二区| 日本免费在线视频| 一本色道a无线码一区v| 美女网站视频在线观看| 欧美第一精品| 国产精品视频自拍| 欧美色综合一区二区三区| 亚洲成人午夜电影| 三大队在线观看| 国产精品毛片久久| 国产精品成人国产乱一区| 午夜福利视频一区二区| 一区二区三区四区亚洲| 亚洲最大天堂网| 日本道不卡免费一区| 国产91精品久| 香蕉av在线播放| 亚洲五码中文字幕| 亚洲熟妇一区二区| 在线观看日韩| 亚洲最大av在线| 98在线视频| 欧美日韩一区国产| 久久婷婷五月综合| 日本中文在线一区| 日韩高清av| 日韩av一级| 国产亚洲欧美日韩精品| 欧美一区二区三区久久久| 久久日一线二线三线suv| 鲁一鲁一鲁一鲁一澡| 你懂的在线观看一区二区| 91精品国产91久久| 亚洲欧洲视频在线观看| 狠狠躁夜夜躁人人躁婷婷91| 国产老熟女伦老熟妇露脸| 亚洲精品影视| 久久狠狠久久综合桃花| 麻豆蜜桃在线观看| 亚洲欧美另类中文字幕| 天堂网一区二区| 欧美国产欧美综合| 国产日韩欧美久久| 五月久久久综合一区二区小说| 国产精品直播网红| 黄色免费在线观看| 日韩一区二区三区电影| 国产一级中文字幕| 91一区二区三区在线观看| 日本精品一区二区三区四区| 国内精品久久久久久久影视简单 | 亚洲色图都市激情| 中文字幕久久精品一区二区| 91av在线看| 二区三区在线| 91精品国产91久久综合桃花| 久久久香蕉视频| 99精品国产99久久久久久白柏| 能在线观看的av| 波多野结衣一区| www国产亚洲精品| 国产美女精品写真福利视频| 亚洲视频欧洲视频| 国产精品欧美综合亚洲| 亚洲成人在线观看视频| 亚洲女优在线观看| 国产精品自在欧美一区| 国产免费一区二区三区视频| 日韩伦理一区| 国产精品久久亚洲7777| 亚洲成人短视频| 不卡av日日日| 日本高清中文字幕二区在线| 欧美精品三级日韩久久| 尤物视频在线观看国产| 国产精品剧情在线亚洲| 国产日韩视频一区| 日本vs亚洲vs韩国一区三区二区 | 欧美一区二区三区精品| 国产成人在线观看网站| 国产精品不卡一区二区三区| 亚洲一区二区三区黄色| 麻豆精品久久精品色综合| 国产真人做爰毛片视频直播| 第一sis亚洲原创| 国产综合18久久久久久| 色综合视频一区二区三区日韩 | 91精品影视| 欧美大荫蒂xxx| av午夜在线| 日韩av在线网址| av在线免费在线观看| 欧洲一区二区三区免费视频| www.av视频在线观看| 国产精品理论在线观看| 成人精品999| av资源网一区| 中文字幕 欧美 日韩| 极品少妇一区二区| 久久久精品三级| 国产一区导航| 男女激情免费视频| 一区二区蜜桃| 午夜一区二区三区| 国产探花一区二区| 久久精品中文字幕一区二区三区| 久久影院一区二区三区| 国产一区二区色| 精品国模一区二区三区| 日本道色综合久久影院| √天堂8资源中文在线| 久久99精品久久久久久青青91| 最近高清中文在线字幕在线观看| 亚洲欧美激情另类校园| 亚洲三级中文字幕| 亚洲精品国产免费| 亚洲欧美黄色片| 精品日产卡一卡二卡麻豆| aaa国产视频| 欧美一级理论性理论a| 国产又爽又黄又嫩又猛又粗| 精品视频一区三区九区| 亚洲av无码不卡| 色综合久久久久| 一级做a爰片久久毛片| 天天综合网 天天综合色| 国产小视频在线看| 亚洲午夜久久久久久久久电影网 | 欧美成人一级视频| www.黄色小说.com| 日韩小视频在线观看专区| 精品国产亚洲一区二区麻豆| 7777精品伊人久久久大香线蕉 | 久久一区二区三| 亚洲一卡二卡三卡四卡五卡| 久久久久久久久久久久久女过产乱| 亚洲色图清纯唯美| 特级片在线观看| 亚洲国产日韩a在线播放| 日本少妇全体裸体洗澡| 午夜婷婷国产麻豆精品| 91丝袜一区二区三区| 欧美性受xxxx黑人xyx性爽| 亚洲在线视频播放| 欧美一级专区免费大片| 天天干视频在线观看| 亚洲欧美综合精品久久成人| av男人的天堂在线| 久久影视电视剧免费网站清宫辞电视 | 一级做a爰片久久毛片| 欧美视频一区二区三区四区| 国产又大又粗又长| 亚洲丁香婷深爱综合| 欧美男男激情freegay| 欲色天天网综合久久| 国产日产一区二区| 97国产成人精品视频| 国产免费不卡| 91欧美精品午夜性色福利在线| baoyu135国产精品免费| 美国av一区二区三区| 日韩88av| 2018国产在线| 日韩成人dvd| 91精品国产高清91久久久久久 | 日韩av资源在线播放| av在线收看| 欧美极品美女视频网站在线观看免费 | 精品国产18久久久久久| 亚洲乱亚洲乱妇无码| 麻豆视频在线观看免费| 91av福利视频| 9999精品免费视频| 欧美高清视频一区| 一本一道久久a久久精品蜜桃| 成人中文字幕在线播放| 裸体一区二区三区| 中文字幕天堂网| 国产精品人妖ts系列视频| 日本一级黄色录像| 88在线观看91蜜桃国自产| 日韩中文字幕观看| 久久精品视频99| 三级成人黄色影院| 成人动漫视频在线观看完整版| 欧美日韩中字| 青青艹视频在线| 国产成人综合在线观看| 色www亚洲国产阿娇yao| 欧美日韩国产精品一区二区三区四区 | 日韩欧美中文字幕公布| 国产精品影院在线| 性日韩欧美在线视频| 日韩欧美中文字幕在线视频| 水蜜桃亚洲一二三四在线| 国产精品女主播一区二区三区 | 久久色在线视频| 国产乱码久久久久久| 欧美丰满少妇xxxxx高潮对白| 日本成人一区| 高清一区二区三区四区五区| 白嫩亚洲一区二区三区| 亚洲aⅴ天堂av在线电影软件| 国产日韩一区| www.17c.com喷水少妇| 亚洲欧美日韩一区二区三区在线观看| 三级网站在线播放| 日韩精品中文字| av中文字幕在线观看第一页| 97人人模人人爽视频一区二区| 99久久激情| 黄色片在线免费| 久久精品免视看| 国产精品自拍99| 亚洲国产日韩欧美在线图片| 女人天堂av在线播放| 91青青草免费观看| 欧美日本免费| 欧美xxxx日本和非洲| 亚洲一区二区三区视频在线播放| 国产高清不卡视频| 美女福利精品视频| 日韩一区二区三区精品| 99亚洲国产精品| 国产成人在线电影| 久久精品波多野结衣| 欧美成人bangbros| 日本大片在线播放| 国产精品制服诱惑| 在线视频精品| 国产精品jizz| 午夜精品福利一区二区三区蜜桃| 日本激情视频网站| 91精品国产91久久久久久久久| 久久悠悠精品综合网| 又粗又黑又大的吊av| 国产亚洲一二三区| 中文字幕欧美在线观看| 麻豆国产va免费精品高清在线| 日韩精品视频中文字幕| 日韩人妻无码精品久久久不卡| aaa亚洲精品| chinese国产精品| 日韩亚洲欧美成人| 日韩精品视频在线看| 黄色av网址在线播放| 国产日韩欧美在线一区| 一卡二卡在线观看| 色哟哟亚洲精品一区二区| 999色成人| 成人网站免费观看入口| 91在线国内视频| 在线免费a视频| 欧美高清第一页| 亚欧洲精品视频在线观看| 中文字幕 91| 亚洲精品乱码久久久久久日本蜜臀| 日本精品一二区| 国产精品1234| 午夜日本精品| a级大片在线观看| 日韩一级片网址| 偷拍自拍在线看| 亚洲视频sss| 成人av免费观看| 欧美一区二区三区久久久| 欧美成人性生活| 久久99国产精品视频| www.成人黄色| 狠狠色狠狠色综合日日五| 国产在线激情| 欧美日韩亚洲免费| 国产精品白丝av| 免费又黄又爽又猛大片午夜| 欧美成人精品在线| 久久av综合| 中文字幕制服丝袜| 欧美日韩一区 二区 三区 久久精品| 女同视频在线观看| 伊人色综合久久天天五月婷| 91在线免费播放| 国产富婆一级全黄大片| 国产精品一区二区电影| 国产日韩一区|