精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品视频久久久久久| 91麻豆制片厂| 婷婷综合六月| 成人免费视频在线观看| 成人激情直播| 欧美一级淫片免费视频黄| 婷婷激情综合| 亚洲精品成人网| the porn av| heyzo高清国产精品| 久久精品水蜜桃av综合天堂| 亚洲xxxx3d| 青青草免费观看视频| 91综合视频| 亚洲男女自偷自拍图片另类| 91在线第一页| 唐人社导航福利精品| 一区二区三区四区精品在线视频| 韩日午夜在线资源一区二区| 国产一区二区三区在线观看 | 日韩中文字幕国产精品| 日本三级日本三级日本三级极| 99久久婷婷国产综合精品首页| 亚洲综合在线五月| 一本色道久久99精品综合| 日本黄色不卡视频| 激情欧美一区二区三区在线观看| 欧美在线一级va免费观看| 国产一区二区视频在线观看免费| 欧美日中文字幕| 亚洲精品久久在线| 亚洲成人福利视频| 超碰国产精品一区二页| 在线看一区二区| 男人添女人下面高潮视频| 91精品久久久久久粉嫩| 国产精品毛片高清在线完整版| 久久国产精品久久精品国产| 亚洲国产www| 国产在线不卡视频| 国产伦精品一区二区三区精品视频 | 国产日韩欧美久久| 欧美大电影免费观看| 精品久久香蕉国产线看观看gif| 亚洲乱码日产精品bd在线观看| 色开心亚洲综合| 国产精品久久久久久一区二区三区| 日本午夜一区二区三区| 男女视频在线观看| 久久综合狠狠综合久久激情| 久久精品国产美女| 视频国产一区二区三区| 91尤物视频在线观看| 国产精品久久久对白| 亚洲精品字幕在线观看| 风间由美性色一区二区三区 | 亚洲欧美一区二区三区久本道91| 日日夜夜精品网站| 成人在线观看免费| 国产女同性恋一区二区| 亚州欧美一区三区三区在线| 91在线视频| 国产精品久久久久7777按摩| 亚洲人成网站在线观看播放| 麻豆网站视频在线观看| 亚洲欧美另类小说视频| 超碰97在线看| 免费电影网站在线视频观看福利| 亚洲网友自拍偷拍| www.日本在线播放| 性孕妇free特大另类| 日本久久一区二区| 狠狠干狠狠操视频| 亚洲精品一区av| 日韩欧美久久一区| 亚洲中文字幕一区| 欧洲毛片在线视频免费观看| 精品国偷自产在线视频| 欧美三级在线免费观看| 亚洲久久在线| 国产精品福利无圣光在线一区| 一级特黄aaa大片在线观看| 国产一区 二区 三区一级| 动漫3d精品一区二区三区 | 这里只有精品视频| 真实国产乱子伦对白在线| 亚洲成色精品| 国产精品极品尤物在线观看 | 男同互操gay射视频在线看| 狂野欧美激情性xxxx欧美| 色综合天天天天做夜夜夜夜做| 男女男精品视频站| 日韩一级淫片| 亚洲人成网站免费播放| 免费在线观看a级片| 一本综合久久| 成人免费福利在线| 视频一区二区免费| 中文字幕一区二区三区av| 天天做天天躁天天躁| 国产一区二区三区朝在线观看| 91精品国产综合久久久蜜臀图片| 麻豆国产精品一区| 五月精品视频| 日本精品在线视频| 亚洲国产精品一| 欧美极品少妇xxxxⅹ高跟鞋| 女人帮男人橹视频播放| 99re久久| 亚洲国产美女精品久久久久∴| 欧美视频一区二区在线| 一区二区国产在线观看| 91网站在线看| www.中文字幕久久久| 亚洲成av人**亚洲成av**| 极品粉嫩美女露脸啪啪| 伊人成综合网yiren22| 欧美第一黄色网| 最近中文字幕免费观看| 99riav久久精品riav| 老司机午夜免费福利视频| 欧美日韩五区| 日韩电影免费在线观看中文字幕 | 精品视频全国免费看| jizz日本免费| 亚洲无线视频| 亚洲一区二区三区久久| 91精彩在线视频| 色噜噜狠狠色综合欧洲selulu| 人妻体内射精一区二区三区| 欧美日韩亚洲一区在线观看| 91精品久久久久久综合乱菊| 美国一级片在线免费观看视频| 亚洲超丰满肉感bbw| 少妇欧美激情一区二区三区| 99久久婷婷国产综合精品电影√| 国产精品伦子伦免费视频| 噜噜噜在线观看播放视频| 五月综合激情日本mⅴ| 精品无码人妻少妇久久久久久| 欧美日韩 国产精品| 亚洲一区二区免费| a黄色片在线观看| 欧美一三区三区四区免费在线看 | 色8久久精品久久久久久蜜| 国产人妻黑人一区二区三区| 国语精品一区| 懂色av一区二区三区在线播放| 丝袜综合欧美| 日韩精品一区二区三区三区免费| 无码人妻精品一区二区三区夜夜嗨| 久久国产尿小便嘘嘘| 五月天综合网| 国产一区影院| 久久国产色av| 亚洲国产综合网| 亚洲福利一二三区| 日本黄色录像片| 国产日韩欧美一区在线 | 色成人在线视频| 日本一区二区视频在线播放| 老司机精品视频在线| 一区二区三区av| 久久99成人| 97精品国产97久久久久久| 天天干天天摸天天操| 欧美日韩精品国产| 色屁屁草草影院ccyy.com| 日本大胆欧美人术艺术动态| 国产精品av免费| 涩爱av色老久久精品偷偷鲁 | 久久高清免费视频| 久久久av毛片精品| 婷婷丁香激情网| 91精品国产视频| 国产精品日韩高清| 欧美7777| 欧美理论电影在线播放| 天堂中文在线观看视频| 欧美自拍偷拍午夜视频| 污软件在线观看| 99精品国产视频| 国产精品人人爽人人爽| 自拍视频亚洲| 精品欧美国产| 高清不卡一区| 亲子乱一区二区三区电影 | 国产精品极品在线| 污污视频在线看| 亚洲欧美精品一区二区| 99国产精品久久久久久久成人 | 国产成人免费看一级大黄| 午夜一区二区三区视频| 成人性生交大片免费看无遮挡aⅴ| 国产又黄又大久久| 男人操女人免费| 你懂的国产精品永久在线| 久久久久久九九| 精品国产亚洲一区二区三区在线| 欧美诱惑福利视频| 日本激情在线观看| 精品一区电影国产| 免费av一区| 日韩精品一区二区三区老鸭窝 | 中文字幕人妻一区二区三区| 狂野欧美一区| 欧美一区二区视频在线播放| 欧美精品一区二区三区中文字幕| 成人动漫视频在线观看免费| 成人看片在线观看| 亚州av一区二区| 成人福利在线观看视频| 一区二区三区精品99久久| 亚洲精品国产精| 欧美日韩黄色一区二区| 欧美特黄aaaaaa| 亚洲一区在线视频| 亚洲少妇xxx| 久久久久久亚洲综合影院红桃 | 8090成年在线看片午夜| 2024最新电影在线免费观看| 在线精品播放av| 日本亚洲一区| 日韩av中文字幕在线| 国产精品久久久久久久久久久久久久久久久久 | 色综合色狠狠综合色| 伊人365影院| 国产精品欧美一级免费| wwwwxxxx国产| 91美女视频网站| 伊人久久一区二区三区| 国产成人一区在线| 日本亚洲一区二区三区| 激情小说亚洲一区| 国产三级生活片| 激情综合色播激情啊| 一起操在线视频| 久久草av在线| 日韩成人精品视频在线观看| 日韩av网站免费在线| 日本精品一区二区三区四区| 亚洲深夜激情| 国内外成人激情视频| 亚洲欧美激情诱惑| 18禁免费观看网站| 国产毛片一区| 99草草国产熟女视频在线| 久久婷婷一区| 无码人妻精品一区二区三区66| 美女久久一区| 国产野外作爱视频播放| 三级欧美在线一区| 天天操天天爱天天爽| 免费在线看一区| 中文字幕在线视频精品| 国产在线观看一区二区| 9191在线视频| 99精品国产一区二区三区不卡| 自拍视频一区二区| 久久久久久亚洲综合| www.99热| 亚洲欧美日韩一区二区| 久久久久免费看| 福利二区91精品bt7086| 久久夜色精品国产噜噜亚洲av| 日本乱人伦aⅴ精品| 中文字幕在线2019| 91精品国产综合久久精品图片| 精品国产av鲁一鲁一区| 精品999久久久| 深夜福利在线看| 日韩在线视频网| 日本高清在线观看| 69av视频在线播放| 成人在线视频免费看| **亚洲第一综合导航网站| 菁菁伊人国产精品| 午夜精品一区二区三区四区| 亚洲欧美在线专区| 国产综合中文字幕| 免费观看日韩电影| 日本美女视频网站| 国产女同性恋一区二区| 欧美成人免费观看视频| 欧美午夜精品久久久久久人妖| 亚洲视频一区在线播放| 精品久久人人做人人爰| 国产精品影院在线| 欧美日韩成人网| 精品成人免费一区二区在线播放| 亚洲精品免费一区二区三区| 自拍偷拍欧美一区| 在线观看17c| 久久综合中文| 亚洲成a人片在线www| 久久久久国色av免费看影院| 一级黄色录像视频| 欧美在线999| 三级网站在线看| 精品国模在线视频| 澳门成人av网| 99精品99久久久久久宅男| 精品产国自在拍| www..com日韩| 国产又黄又大久久| 亚洲av毛片基地| 欧美日韩国产精品一区二区不卡中文| 亚洲网站免费观看| 亚洲日韩第一页| 国产h片在线观看| 亚洲最大成人网色| 精品色999| 欧美在线观看成人| 国产成人午夜高潮毛片| 国产探花视频在线| 精品久久久视频| 精品国精品国产自在久不卡| 中文字幕亚洲第一| 2022成人影院| 极品校花啪啪激情久久| 欧美视频二区| 日本少妇xxx| 中文字幕制服丝袜一区二区三区| 亚洲自拍一区在线观看| 欧美精品一区二区在线播放 | 亚洲一区二区三区爽爽爽爽爽| 亚洲天堂手机在线| 国产亚洲一区二区在线| 大胆人体一区| 久久青青草原| 亚洲一区久久| 黄色片视频免费观看| 亚洲国产成人91porn| 亚洲成人中文字幕在线| 欧美精品少妇videofree| 国产精品日本一区二区不卡视频| 午夜精品短视频| 日韩精品电影在线| 天天躁夜夜躁狠狠是什么心态| 日韩人体视频一二区| 内衣办公室在线| 国产精品第七影院| 不卡日本视频| 五月天婷婷亚洲| 综合久久久久久久| 国产口爆吞精一区二区| 久久福利视频导航| 麻豆精品在线| av无码久久久久久不卡网站| 国产成人免费视频精品含羞草妖精| 日本中文字幕免费在线观看| 欧美一二三四区在线| 直接在线观看的三级网址| 99www免费人成精品| 亚洲高清免费| 麻豆av免费观看| 欧美中文字幕一区二区三区亚洲| 成年女人的天堂在线| 国产欧美日韩丝袜精品一区| 99久久夜色精品国产亚洲96| xxxxwww一片| 黑人精品xxx一区| 黄色软件在线观看| 成人激情在线播放| 亚洲无线视频| 免费毛片视频网站| 欧美丝袜第三区| 欧美家庭影院| 久热这里只精品99re8久| 老牛国产精品一区的观看方式| 国产精品69久久久久孕妇欧美| 91精品国产全国免费观看| 国产蜜臀av在线播放| 欧美日韩一区综合| 经典三级在线一区| 国产极品美女高潮无套嗷嗷叫酒店 | 亚洲激情图片小说视频| 色av男人的天堂免费在线| 国产成人亚洲综合91| 一区二区三区四区电影| 国产精品久久久久久亚洲色| 在线这里只有精品| 怡红院在线播放| 国产一区二区三区四区五区加勒比 | 中文字幕欧美国产| 亚洲黄色在线观看视频| 热草久综合在线| 亚洲精品电影| 精品人妻无码一区二区三区| 欧美一区二区三区电影| 中文日产幕无线码一区二区| 日本三级福利片| 久久久久99精品一区| 成人福利小视频| 国产精品美女主播在线观看纯欲| 欧美午夜电影在线观看 | 疯狂蹂躏欧美一区二区精品| 老司机午夜在线视频| 欧美激情www| 成人一区二区三区|