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

程序員三大美德之一:快速有效檢索網頁數據的“懶惰”程序員指南

大數據 數據分析
根據Perl編程語言的作者拉里·沃爾的說法,程序員具有三大美德:懶惰,不耐煩和傲慢。懶惰可以讓你全力以赴,降低總能耗,其他人會發現你編寫的省力程序很有用。

 根據Perl編程語言的作者拉里·沃爾的說法,程序員具有三大美德:懶惰,不耐煩和傲慢。懶惰可以讓你全力以赴,降低總能耗,其他人會發現你編寫的省力程序很有用。

[[336534]]

比爾蓋茨的觀點是:我選擇讓懶惰的人完成艱巨的任務,因為他可以找到完成任務的捷徑。

網頁抓取或許是一個相當簡單的編程問題:在文檔的源代碼中搜索唯一標識符,提取相關數據,但我認為存在一個更“懶惰”的解決方案——更簡單,更快,可以生成更多數據。

雅虎財經是財務數據做得最好的網站之一,這也讓它成為金融愛好者進行網頁抓取的主要目標。幾乎每天都有關于StackOverflow的問題,抓取數據的人參考了雅虎財經的某種數據檢索(通常是通過網絡抓取)。

網頁抓取問題1

網頁抓取者嘗試查找Facebook當前的股票價格。代碼如下:

  1. import requests 
  2.         from bs4 importBeautifulSoup 
  3.              defparsePrice(): 
  4.           r = requests.get("https://finance.yahoo.com/quote/FB?p=FB"
  5.           soup =BeautifulSoup(r.text, "lxml"
  6.           price = soup.find( div , { class : My(6px) Pos(r)smartphone_Mt(6px) }).find( span ).text 
  7.           print(f the current price: {price} ) 

該代碼輸出如下:

  1. the current price: 216.08 

使用簡單的網頁抓取解決方案非常簡單,但這還不夠“懶惰”,讓我們看下一個。

網頁抓取問題2

網頁抓取者正在嘗試從統計標簽中查找有關股票的企業價值和空頭股票數量的數據。他的問題實際上是檢索可能存在或不存在的嵌套字典值,但是在檢索數據上,他似乎已經找到了更好的解決方法。

  1. import requests, re, json, pprint 
  2.              p = re.compile(r root.App.main =(.*); ) 
  3.         tickers = [ AGL.AX ] 
  4.         results = {} 
  5.              with requests.Session() as s: 
  6.                  for ticker in tickers: 
  7.                 r = s.get( https://finance.yahoo.com/quote/{}/key-statistics?p={} .format(ticker,ticker)) 
  8.                 data = json.loads(p.findall(r.text)[0]) 
  9.                 key_stats = data[ context ][ dispatcher ][ stores ][ QuoteSummaryStore ] 
  10.                 print(key_stats) 
  11.                 res = { 
  12.                          Enterprise Value  : key_stats[ defaultKeyStatistics ][ enterpriseValue ][ fmt ] 
  13.                         , Shares_Short  : key_stats[ defaultKeyStatistics ][ sharesShort ].get( longFmt ,  N/A ) 
  14.                 } 
  15.                 results[ticker] = res 
  16.              print(results) 

看第3行:網頁抓取者能夠在javascript的變量內找到他要查找的數據:

  1. root.App.main = {.... }; 

在那里,只需訪問字典中適當的嵌套鍵,即可輕松檢索數據。但是,確實還有更“懶惰”的辦法。

“懶惰”的解決方案1

  1. import requests 
  2.              r = requests.get("https://query2.finance.yahoo.com/v10/finance/quoteSummary/FB?modules=price"
  3.        data = r.json() 
  4.        print(data) 
  5.        print(f"the currentprice: {data[ quoteSummary ][ result ][0][ price ][ regularMarketPrice ][ raw ]}"

看看第三行的URL,輸出如下:

  1.      quoteSummary : { 
  2.          error : None, 
  3.          result : [{ 
  4.              price : { 
  5.                 averageDailyVolume10Day : {}, 
  6.                 averageDailyVolume3Month : {}, 
  7.                  circulatingSupply : {}, 
  8.                  currency :  USD , 
  9.                  currencySymbol :  $ , 
  10.                  exchange :  NMS , 
  11.                  exchangeDataDelayedBy :0, 
  12.                  exchangeName : NasdaqGS , 
  13.                  fromCurrency : None, 
  14.                  lastMarket : None, 
  15.                  longName :  Facebook,Inc. , 
  16.                  marketCap : { 
  17.                      fmt :  698.42B , 
  18.                      longFmt : 698,423,836,672.00 , 
  19.                      raw : 698423836672 
  20.                 }, 
  21.                  marketState :  REGULAR , 
  22.                  maxAge : 1, 
  23.                  openInterest : {}, 
  24.                  postMarketChange : {}, 
  25.                  postMarketPrice : {}, 
  26.                  preMarketChange : { 
  27.                      fmt :  -0.90 , 
  28.                      raw : -0.899994 
  29.                 }, 
  30.                  preMarketChangePercent :{ 
  31.                      fmt :  -0.37% , 
  32.                      raw : -0.00368096 
  33.                 }, 
  34.                  preMarketPrice : { 
  35.                      fmt :  243.60 , 
  36.                      raw : 243.6 
  37.                 }, 
  38.                  preMarketSource : FREE_REALTIME , 
  39.                  preMarketTime :1594387780, 
  40.                  priceHint : { 
  41.                      fmt :  2 , 
  42.                      longFmt :  2 , 
  43.                      raw : 2 
  44.                 }, 
  45.                  quoteSourceName : Nasdaq Real Time   
  46.                  Price , 
  47.                  quoteType :  EQUITY , 
  48.                  regularMarketChange : { 
  49.                      fmt :  0.30 , 
  50.                      raw : 0.30160522 
  51.                 }, 
  52.                 regularMarketChangePercent : { 
  53.                      fmt :  0.12% , 
  54.                      raw : 0.0012335592 
  55.                 }, 
  56.                  regularMarketDayHigh : { 
  57.                      fmt :  245.49 , 
  58.                      raw : 245.49 
  59.                 }, 
  60.                  regularMarketDayLow : { 
  61.                      fmt :  239.32 , 
  62.                      raw : 239.32 
  63.                 }, 
  64.                  regularMarketOpen : { 
  65.                      fmt :  243.68 , 
  66.                      raw : 243.685 
  67.                 }, 
  68.                 regularMarketPreviousClose : { 
  69.                      fmt :  244.50 , 
  70.                      raw : 244.5 
  71.                 }, 
  72.                  regularMarketPrice : { 
  73.                      fmt :  244.80 , 
  74.                      raw : 244.8016 
  75.                 }, 
  76.                  regularMarketSource : FREE_REALTIME , 
  77.                  regularMarketTime :1594410026, 
  78.                  regularMarketVolume : { 
  79.                      fmt :  19.46M , 
  80.                      longFmt :  19,456,621.00 , 
  81.                      raw : 19456621 
  82.                 }, 
  83.                  shortName :  Facebook,Inc. , 
  84.                  strikePrice : {}, 
  85.                  symbol :  FB , 
  86.                  toCurrency : None, 
  87.                  underlyingSymbol : None, 
  88.                  volume24Hr : {}, 
  89.                  volumeAllCurrencies : {} 
  90.             } 
  91.         }] 
  92.     } 
  93. }the current price: 241.63 

“懶惰”的解決方案2

  1. import requests 
  2.              r = requests.get("https://query2.finance.yahoo.com/v10/finance/quoteSummary/AGL.AX?modules=defaultKeyStatistics"
  3.       data = r.json() 
  4.       print(data) 
  5.       print({ 
  6.            AGL.AX : { 
  7.                Enterprise Value : data[ quoteSummary ][ result ][0][ defaultKeyStatistics ][ enterpriseValue ][ fmt ], 
  8.                Shares Short : data[ quoteSummary ][ result ][0][ defaultKeyStatistics ][ sharesShort ].get( longFmt ,  N/A ) 
  9.           } 
  10.       }) 

再次看一下第三行的URL,輸出如下:

  1.      quoteSummary : { 
  2.          result : [{ 
  3.              defaultKeyStatistics : { 
  4.                  maxAge : 1, 
  5.                  priceHint : { 
  6.                      raw : 2, 
  7.                      fmt :  2 , 
  8.                      longFmt :  2  
  9.                 }, 
  10.                  enterpriseValue : { 
  11.                      raw : 13677747200, 
  12.                      fmt :  13.68B , 
  13.                      longFmt : 13,677,747,200  
  14.                 }, 
  15.                  forwardPE : {}, 
  16.                  profitMargins : { 
  17.                      raw : 0.07095, 
  18.                      fmt :  7.10%  
  19.                 }, 
  20.                  floatShares : { 
  21.                      raw : 637754149, 
  22.                      fmt :  637.75M , 
  23.                      longFmt : 637,754,149  
  24.                 }, 
  25.                  sharesOutstanding : { 
  26.                      raw : 639003008, 
  27.                      fmt :  639M , 
  28.                      longFmt : 639,003,008  
  29.                 }, 
  30.                  sharesShort : {}, 
  31.                  sharesShortPriorMonth :{}, 
  32.                  sharesShortPreviousMonthDate :{}, 
  33.                  dateShortInterest : {}, 
  34.                  sharesPercentSharesOut : {}, 
  35.                  heldPercentInsiders : { 
  36.                      raw : 0.0025499999, 
  37.                      fmt :  0.25%  
  38.                 }, 
  39.                  heldPercentInstitutions : { 
  40.                      raw : 0.31033, 
  41.                      fmt :  31.03%  
  42.                 }, 
  43.                  shortRatio : {}, 
  44.                  shortPercentOfFloat :{}, 
  45.                  beta : { 
  46.                      raw : 0.365116, 
  47.                      fmt :  0.37  
  48.                 }, 
  49.                  morningStarOverallRating :{}, 
  50.                  morningStarRiskRating :{}, 
  51.                  category : None, 
  52.                  bookValue : { 
  53.                      raw : 12.551, 
  54.                      fmt :  12.55  
  55.                 }, 
  56.                  priceToBook : { 
  57.                      raw : 1.3457094, 
  58.                      fmt :  1.35  
  59.                 }, 
  60.                 annualReportExpenseRatio : {}, 
  61.                  ytdReturn : {}, 
  62.                  beta3Year : {}, 
  63.                  totalAssets : {}, 
  64.                  yield : {}, 
  65.                  fundFamily : None, 
  66.                  fundInceptionDate : {}, 
  67.                  legalType : None, 
  68.                  threeYearAverageReturn :{}, 
  69.                  fiveYearAverageReturn :{}, 
  70.                  priceToSalesTrailing12Months :{}, 
  71.                  lastFiscalYearEnd : { 
  72.                      raw : 1561852800, 
  73.                      fmt :  2019-06-30  
  74.                 }, 
  75.                  nextFiscalYearEnd : { 
  76.                      raw : 1625011200, 
  77.                      fmt :  2021-06-30  
  78.                 }, 
  79.                  mostRecentQuarter : { 
  80.                      raw : 1577750400, 
  81.                      fmt :  2019-12-31  
  82.                 }, 
  83.                 earningsQuarterlyGrowth : { 
  84.                      raw : 0.114, 
  85.                      fmt :  11.40%  
  86.                 }, 
  87.                  revenueQuarterlyGrowth :{}, 
  88.                  netIncomeToCommon : { 
  89.                      raw : 938000000, 
  90.                      fmt :  938M , 
  91.                      longFmt : 938,000,000  
  92.                 }, 
  93.                  trailingEps : { 
  94.                      raw : 1.434, 
  95.                      fmt :  1.43  
  96.                 }, 
  97.                  forwardEps : {}, 
  98.                  pegRatio : {}, 
  99.                  lastSplitFactor : None, 
  100.                  lastSplitDate : {}, 
  101.                  enterpriseToRevenue : { 
  102.                      raw : 1.035, 
  103.                      fmt :  1.03  
  104.                 }, 
  105.                  enterpriseToEbitda : { 
  106.                      raw : 6.701, 
  107.                      fmt :  6.70  
  108.                 }, 
  109.                  52WeekChange : { 
  110.                      raw : -0.17621362, 
  111.                      fmt :  -17.62%  
  112.                 }, 
  113.                  SandP52WeekChange : { 
  114.                      raw : 0.045882702, 
  115.                      fmt :  4.59%  
  116.                 }, 
  117.                  lastDividendValue : {}, 
  118.                  lastCapGain : {}, 
  119.                  annualHoldingsTurnover :{} 
  120.             } 
  121.        }], 
  122.          error : None 
  123.     } 
  124. }{ AGL.AX : { Enterprise Value :  13.73B ,  Shares Short :  N/A }} 

“懶惰”的解決方案只是簡單地將請求從使用前端URL更改為某種非官方的返回JSON數據的API端點。這個方案更簡單,可以導出更多數據 ,那么它的速度呢?代碼如下:

  1. import timeit 
  2.      import requests 
  3.      from bs4 importBeautifulSoup 
  4.      import json 
  5.      import re 
  6.              repeat =5 
  7.      number =5 
  8.              defweb_scrape_1(): 
  9.          r = requests.get(f https://finance.yahoo.com/quote/FB?p=FB ) 
  10.          soup =BeautifulSoup(r.text, "lxml"
  11.          price = soup.find( div , { class : My(6px) Pos(r)smartphone_Mt(6px) }).find( span ).text 
  12.          returnf the current price: {price}  
  13.              deflazy_1(): 
  14.          r = requests.get( https://query2.finance.yahoo.com/v10/finance/quoteSummary/FB?modules=price ) 
  15.          data = r.json() 
  16.          returnf"the currentprice: {data[ quoteSummary ][ result ][0][ price ][ regularMarketPrice ][ raw ]}" 
  17.      
  18.          defweb_scrape_2(): 
  19.          p = re.compile(r root.App.main = (.*); ) 
  20.          ticker = AGL.AX  
  21.          results = {} 
  22.          with requests.Session() as s: 
  23.              r = s.get( https://finance.yahoo.com/quote/{}/key-statistics?p={} .format(ticker,ticker)) 
  24.              data = json.loads(p.findall(r.text)[0]) 
  25.              key_stats = data[ context ][ dispatcher ][ stores ][ QuoteSummaryStore ] 
  26.              res = { 
  27.                       Enterprise Value : key_stats[ defaultKeyStatistics ][ enterpriseValue ][ fmt ], 
  28.                       Shares Short : key_stats[ defaultKeyStatistics ][ sharesShort ].get( longFmt ,  N/A ) 
  29.              } 
  30.              results[ticker] = res 
  31.          return results 
  32.     
  33.          deflazy_2(): 
  34.          r = requests.get( https://query2.finance.yahoo.com/v10/finance/quoteSummary/AGL.AX?modules=defaultKeyStatistics ) 
  35.          data = r.json() 
  36.          return { 
  37.               AGL.AX : { 
  38.                   Enterprise Value : data[ quoteSummary ][ result ][0][ defaultKeyStatistics ][ enterpriseValue ][ fmt ], 
  39.                   Shares Short : data[ quoteSummary ][ result ][0][ defaultKeyStatistics ][ sharesShort ].get( longFmt ,  N/A ) 
  40.              } 
  41.          } 
  42.     
  43.          web_scraping_1_times = timeit.repeat( 
  44.           web_scrape_1() , 
  45.          setup= import requests; from bs4 import BeautifulSoup , 
  46.          globals=globals(), 
  47.          repeat=repeat, 
  48.          number=number) 
  49.      print(f web scraping #1min time is {min(web_scraping_1_times) / number} ) 
  50.              lazy_1_times = timeit.repeat( 
  51.           lazy_1() , 
  52.          setup= import requests , 
  53.          globals=globals(), 
  54.          repeat=repeat, 
  55.          number=number 
  56.      ) 
  57.      print(f lazy #1 min timeis {min(lazy_1_times) / number} ) 
  58.     
  59.          web_scraping_2_times = timeit.repeat( 
  60.           web_scrape_2() , 
  61.          setup= import requests, re, json , 
  62.          globals=globals(), 
  63.          repeat=repeat, 
  64.          number=number) 
  65.      print(f web scraping #2min time is {min(web_scraping_2_times) / number} ) 
  66.              lazy_2_times = timeit.repeat( 
  67.           lazy_2() , 
  68.          setup= import requests , 
  69.          globals=globals(), 
  70.          repeat=repeat, 
  71.          number=number 
  72.      ) 
  73.      print(f lazy #2 min timeis {min(lazy_2_times) / number} ) 
  1. web scraping #1 min time is 0.5678426799999997 
  2. lazy #1 min time is 0.11238783999999953 
  3. web scraping #2 min time is 0.3731000199999997 
  4. lazy #2 min time is 0.0864451399999993 

“懶惰”的替代方案比其網頁抓取同類產品快4到5倍!

“偷懶”的過程

思考一下上面遇到的兩個問題:原來的方案里,代碼加載到頁面后,我們嘗試檢索數據。“懶惰”的解決方案直接針對數據源,根本不理會前端頁面。當你嘗試從網站提取數據時,這是一個重要區別和一個很好的方法。

步驟1:檢查XHR請求

XHR(XMLHttpRequest)對象是可用于Web瀏覽器腳本語言(例如JavaScript)的API,它將HTTP或HTTPS請求發送到Web服務器,并將服務器響應數據加載回腳本中。基本上,XHR允許客戶端從URL檢索數據,不必刷新整個網頁。

筆者將使用Chrome進行以下演示,但是其他瀏覽器也具有類似的功能。

· 打開Chrome的開發者控制臺。要在Google Chrome中打開開發者控制臺,請打開瀏覽器窗口右上角的Chrome菜單,然后選擇更多工具>開發者工具。也可以使用快捷鍵Option + ?+ J(適用于ios系統),或Shift + CTRL + J(適用于Windows / Linux)。

  •  選擇“網絡”選項卡。

  • 然后通過“ XHR”篩選結果

應注意,盡管有些請求包含“ AAPL”,得到的結果將相似但不相同。從調查這些開始,單擊最左側列中包含字符“ AAPL”的鏈接之一。

  • 選擇其中一個鏈接后會看到一個附加窗口,其中提供了所選請求的詳細信息。第一個選項卡Headers,提供有關瀏覽器請求和服務器響應的詳細信息。你應該立即注意到“Headers”選項卡中的“URL請求”與上面的惰性解決方案中提供的URL請求非常相似。

如果選擇“預覽”選項卡,將看到從服務器返回的數據。

 

好極了!看來我們找到了獲取Apple OHLC數據的URL!

步驟2:搜尋

現在我們已經發現了一些通過瀏覽器發出的XHR請求。搜索javascript文件,查看是否可以找到更多信息。筆者發現與XHR請求相關的URL共同點是“ query1”和“ query2”。在開發者控制臺的右上角,選擇三個垂直點,然后在下拉框中選擇“搜索”。

 

在搜索欄中搜索“ query2”:

選擇第一個選項。將會彈出一個附加選項卡,其中包含找到“ query2”的位置。應該在這里注意到類似的內容:

網頁抓取解決方案2提取的數據變量與該變量相同。控制臺應提供“優質打印”變量的選項。你可以選擇該選項,也可以將整行(上面的第11行)復制并粘貼到https://beautifier.io/。或者如果你使用vscode,下載美化擴展,它會做同樣的事情。

正確格式化后,將整個代碼粘貼到文本編輯器或類似的編輯器中,然后再次搜索“ query2”。搜索結果應該在 “ Service Plugin” 中。該部分包含雅虎財經用于在其頁面中填充數據的URL。以下是該部分的內容:

  1. "tachyon.quoteSummary": { 
  2. "path""/v10/finance/quoteSummary/{symbol}"
  3. "timeout":6000, 
  4. "query": ["lang""region","corsDomain""crumb""modules",    "formatted"], 
  5. "responseField":"quoteSummary"
  6. "get": {"formatted"true
  7. }, 

以上是“懶惰”的解決方案中使用的URL。

“懶惰”人類發展的階梯,適當偷懶,你會進入新世界。

本文轉載自微信公眾號「讀芯術」,可以通過以下二維碼關注。轉載本文請聯系讀芯術公眾號。

 

責任編輯:武曉燕 來源: 讀芯術
相關推薦

2020-02-22 21:51:43

程序員Microsoft SServerSQL

2014-06-05 09:23:47

程序員高效

2013-12-24 09:59:48

程序員管理

2018-04-23 11:00:06

程序員養生健康

2013-08-20 09:33:59

程序員

2014-09-11 09:25:15

程序員

2011-05-13 14:34:02

程序員

2012-03-06 09:22:46

程序員

2009-06-22 09:06:57

程序員技術升級

2013-07-04 13:50:14

2015-07-28 17:58:22

程序員指南

2018-07-25 09:49:59

2019-01-07 09:31:37

程序員測試人員代碼

2011-05-30 14:50:56

程序員

2017-11-14 21:30:15

2012-11-22 14:00:26

程序員

2009-05-21 15:58:12

程序員工作經驗職場

2015-03-25 13:16:55

SQL Server數據庫安全開發人員

2022-02-16 18:21:33

程序員跳槽架構

2012-02-01 09:30:54

HTML 5
點贊
收藏

51CTO技術棧公眾號

国产精品久久九九| 欧美日韩欧美一区二区| 精品一区久久久久久| 9i看片成人免费看片| 国产精品欧美日韩一区| 欧美日韩精品一区二区在线播放| 国产又粗又爽又黄的视频| 东京干手机福利视频| 老妇喷水一区二区三区| 久久影院资源网| 中文字幕丰满孑伦无码专区| 精品乱码一区二区三区四区| 亚洲午夜精品在线| 亚洲图片欧洲图片日韩av| 丰满熟妇乱又伦| 久久精品国产精品亚洲精品| 性欧美xxxx视频在线观看| 国产调教在线观看| 牛牛视频精品一区二区不卡| 欧美久久高跟鞋激| 成人黄色一区二区| 9lporm自拍视频区在线| 最新高清无码专区| 日韩精品伦理第一区| 日本久久一级片| 韩国欧美国产一区| 国产精品美女呻吟| 伊人中文字幕在线观看 | 日本高清视频一区二区三区 | 国产精品白丝av| 国产精品扒开腿爽爽爽视频| 九热这里只有精品| 欧美激情第二页| xvideos亚洲| 日本爱爱爱视频| 亚洲97av| 日韩精品丝袜在线| 亚洲激情 欧美| 豆花视频一区二区| 精品久久人人做人人爱| 波多野结衣中文字幕在线播放| 成人免费在线观看视频| 91国产成人在线| www.亚洲天堂网| 欧美电影免费观看高清完整| 精品国产91久久久久久老师| av日韩在线看| 手机av免费在线| 一区二区三区免费| 欧美日韩午夜爽爽| 青青青草视频在线| 亚洲一区二区视频在线| 日本天堂免费a| 婷婷色在线资源| 亚洲愉拍自拍另类高清精品| 9l视频自拍9l视频自拍| 免费在线观看av| 亚洲欧洲国产日本综合| 一区二区三区四区视频在线| 免费网站黄在线观看| 国产精品福利一区| 在线成人av电影| 国产精品剧情| 亚洲在线一区二区三区| 中国丰满熟妇xxxx性| 国产丝袜在线观看视频| 精品人伦一区二区三区蜜桃网站 | 五月天在线免费视频| 在线āv视频| 亚洲一卡二卡三卡四卡无卡久久 | 亚洲激情成人网| 免费观看一级一片| 精品视频97| 久久视频国产精品免费视频在线| 青花影视在线观看免费高清| 综合一区在线| 97在线看免费观看视频在线观看| 男人的天堂一区二区| 久久婷婷一区| 91精品久久久久久久| 国产精品久久777777换脸| 床上的激情91.| 欧美重口乱码一区二区| 欧美边添边摸边做边爱免费| 一区二区三区不卡视频在线观看| cao在线观看| 成人免费短视频| 538在线一区二区精品国产| 亚洲精品鲁一鲁一区二区三区| 国产精品色呦| 日韩视频在线观看免费| 色婷婷在线观看视频| 日本不卡高清视频| 国产高清一区二区三区| 黄色片在线免费观看| 亚洲日本在线天堂| 欧美精品色婷婷五月综合| 亚洲精品毛片| 亚洲欧美中文日韩v在线观看| 午夜精品一区二区三区视频| 在线欧美一区| 成人黄色av网站| 天堂在线免费av| 亚洲色图欧美在线| 波多野结衣家庭教师视频| 久久伊人久久| 中文字幕日韩欧美在线视频| 日韩免费一级片| 久久爱www久久做| 欧美日本韩国在线| 黄色羞羞视频在线观看| 欧美性大战久久久久久久| 国产女主播在线播放| 久久精品av| 欧美制服第一页| 午夜精品无码一区二区三区| 国产精品青草综合久久久久99| 精品无码国模私拍视频| 国产亚洲亚洲国产一二区| 亚洲深夜福利网站| 国偷自拍第113页| 国产成人精品aa毛片| 中文字幕欧美日韩一区二区三区| 欧美粗大gay| 日韩成人在线电影网| 免费一级肉体全黄毛片| 美女网站色91| 午夜一区二区三区| 国产一区二区主播在线| 亚洲精品国产suv| 国产一级免费观看| 国产乱码精品一区二区三| 亚洲精品中文字幕在线| 免费观看亚洲| 国产婷婷色综合av蜜臀av| 日韩欧美激情视频| av色综合久久天堂av综合| 国产内射老熟女aaaa| 粉嫩一区二区三区在线观看| 中文字幕欧美视频在线| 日韩国产亚洲欧美| 国产日韩亚洲欧美综合| 毛片一区二区三区四区| 日韩中文av| 国产97免费视| 欧美午夜黄色| 色偷偷一区二区三区| 粉嫩av蜜桃av蜜臀av| 久久三级福利| 亚洲丰满在线| 高清一区二区| 久久久久久国产精品| 人妻无码一区二区三区久久99| 亚洲一区精品在线| 成人午夜精品无码区| 国产欧美激情| 日韩欧美亚洲日产国| 久久亚洲精品中文字幕| 久久视频在线观看免费| 午夜精品久久久久久久91蜜桃| 亚洲高清一区二区三区| 好吊一区二区三区视频| 久久国产高清| 亚洲最新在线| 成人激情自拍| 日本精品视频在线观看| h视频网站在线观看| 欧美日韩国产综合一区二区| 亚洲xxxx3d动漫| 成人精品国产免费网站| 日本在线观看a| 成人vr资源| 福利视频一区二区三区| 日韩电影毛片| 色偷偷88888欧美精品久久久| 国产免费久久久| 亚洲成av人在线观看| 国产交换配乱淫视频免费| 麻豆国产精品一区二区三区| 国产树林野战在线播放| 免费日韩一区二区三区| 国产精品福利无圣光在线一区| 免费在线视频欧美| 日韩av在线高清| 亚洲专区第一页| 亚洲影院理伦片| 一区二区伦理片| 国产一区二区电影| 久久精品国产精品亚洲色婷婷| 青青草成人影院| 99久久久久国产精品免费| 欧美成人a交片免费看| 日韩视频永久免费观看| 亚洲色欧美另类| 91精品中文字幕一区二区三区 | 色欧美片视频在线观看在线视频| 三上悠亚在线观看视频| 99精品久久免费看蜜臀剧情介绍| 超碰在线公开97| 亚洲欧洲日本mm| 一区二区视频在线播放| 婷婷成人综合| 成人片在线免费看| 欧美91在线|欧美| 欧美在线播放视频| 欧美一卡二卡| 北条麻妃久久精品| 国产高清视频在线播放| 亚洲精品成人久久久| 国产精品嫩草影院精东| 一本久久a久久免费精品不卡| 青青草在线观看视频| 欧美国产精品一区二区| 成人手机在线免费视频| 国产剧情一区二区| 国产一级不卡毛片| 国产精品久久777777毛茸茸 | 竹内纱里奈兽皇系列在线观看| xvideos成人免费中文版| 男同在线观看| 色yeye免费人成网站在线观看| 欧美电影精品一区二区| 国产成人精品一区二区色戒| 精品成人乱色一区二区| 午夜精品三级视频福利| 999视频在线| 图片区小说区国产精品视频| 特一级黄色录像| 国产精品久久久久久久久晋中 | 国产精品每日更新在线播放网址| 一级性生活大片| 成人精品视频一区二区三区| 久久精品亚洲天堂| 精品一区二区三区视频| 午夜宅男在线视频| 秋霞电影网一区二区| 久久久久狠狠高潮亚洲精品| 国产精品试看| 国产91在线视频观看| 亚洲综合欧美| 久久国产乱子伦免费精品| 先锋影音久久| 日韩精品视频久久| 噜噜噜在线观看免费视频日韩| 婷婷无套内射影院| 国产欧美大片| 久草在在线视频| 日本成人在线电影网| 亚洲国产精品三区| 久久成人久久鬼色| 北条麻妃亚洲一区| 国产99久久久久久免费看农村| 成人三级做爰av| 成人午夜大片免费观看| 亚洲天堂av网站| 91丨九色porny丨蝌蚪| 一级性生活毛片| 国产欧美日韩在线观看视频| 亚洲成人精品久久久| 日本精品一二区| 日韩高清有码在线| 国产午夜视频在线观看| 在线电影中文日韩| 老司机福利在线视频| 欧美黄色小视频| 中文在线免费二区三区| 国产成人久久久精品一区| 国产一区二区精品调教| 成人免费视频网| 亚洲成人黄色| 久久久av水蜜桃| 日韩精品久久| 日韩极品视频在线观看| 亚洲一区二区三区高清不卡| 日韩中文字幕免费在线| 国产一区在线视频| 黄色免费视频网站| 国产亚洲精品7777| tube国产麻豆| 福利微拍一区二区| 亚洲综合一区中| 精品毛片乱码1区2区3区| 男人天堂网在线观看| 中文字幕亚洲一区| 国产乱码在线| 国产精品久久久久久久午夜| 免费一级欧美在线大片 | 精品国产乱码| 超碰97在线看| 久久婷婷久久| 精品国产乱码久久久久夜深人妻| 国产亚洲一区二区三区四区 | 五月婷婷丁香色| 国产精品综合av一区二区国产馆| 黄色国产在线观看| 亚洲三级理论片| 精品黑人一区二区三区| 欧美一区二区高清| 精品资源在线看| 久久久久久成人精品| 国产精品一区二区免费福利视频 | 精品国产网站| 日本五级黄色片| 久久国产日韩欧美精品| 欧美一区二区三区成人精品| 亚洲欧洲另类国产综合| 影音先锋在线国产| 欧美成人精品福利| 美女写真理伦片在线看| 国产成人精品日本亚洲专区61| 久久一级大片| 在线视频精品一区| 丝袜国产日韩另类美女| 亚洲自拍偷拍精品| 亚洲精品免费播放| 亚洲综合网av| 中文字幕精品国产| 亚洲天堂av在线| 国产精品v欧美精品∨日韩| 1024精品久久久久久久久| 国产三级日本三级在线播放| 99久久99久久综合| 久久精品免费av| 欧美成人女星排名| 国产婷婷视频在线| 成人免费高清完整版在线观看| 国产一区二区三区天码| 无罩大乳的熟妇正在播放| 成人一区二区三区在线观看| 人妻久久一区二区| 91精品国产黑色紧身裤美女| 永久av在线| 国产久一一精品| 色欧美自拍视频| 日本激情视频在线播放| 国产日韩欧美精品在线| 无码一区二区三区| 国产亚洲欧洲在线| 四虎4545www国产精品| 欧美日韩一区二区三| 亚洲在线网站| 国产全是老熟女太爽了| 色女孩综合影院| 国产www.大片在线| 国产精品视频地址| 四虎国产精品免费观看| 黄色手机在线视频| 综合色天天鬼久久鬼色| 男女视频在线观看网站| 免费毛片在线不卡| 日韩视频免费播放| 91丨porny丨蝌蚪视频| 五月婷婷开心网| 日韩国产高清污视频在线观看| 蜜桃视频动漫在线播放| 久久国产精品99久久久久久丝袜| 国产模特精品视频久久久久| 成都免费高清电影| 欧美三级在线播放| 黄网站在线免费| 国产成人成网站在线播放青青 | 国内性生活视频| 91麻豆视频网站| 又污又黄的网站| 九九精品在线观看| 欧美日韩麻豆| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 欧美日韩亚洲一区| 醉酒壮男gay强迫野外xx| 91福利区一区二区三区| 日本在线观看| 国产精品手机视频| 日本伊人午夜精品| 国产黄在线免费观看| 精品久久久久av影院| 亚洲综合电影| 亚洲最大色综合成人av| 成人一区二区三区视频| 欧美男人亚洲天堂| 久久亚洲国产精品| 亚洲性视频大全| 日韩a一级欧美一级| 欧美日韩亚洲视频一区| 在线视频1区2区| 国产一区二区免费在线观看| 久久午夜精品一区二区| 国产美女久久久久久| 日韩成人在线免费观看| 亚洲欧美在线人成swag| 日日碰狠狠添天天爽超碰97| 国产亲近乱来精品视频| www.99视频| 国产精品国语对白| 伊人久久亚洲美女图片| 欧美成人短视频| 亚洲精品成人久久电影| 成人动漫视频在线观看| 日韩 欧美 高清| 亚洲成av人片观看| 国产一二三区在线观看|