Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 一区二区三区免费观看,精品91精品91精品国产片,亚洲国产综合久久精品

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          不會Html、JavaScript、CSS,怎么辦?

          不會Html、JavaScript、CSS,怎么辦?有python的Remi庫

          說明:

          =====

          1.1 如果不會web前端的html、JavaScript、CSS的知識怎么辦?無所不能的python可以做到。

          1.2 Remi是一個用于Python應用程序的GUI庫,它將應用程序的界面轉換為HTML,以便在Web瀏覽器中呈現。

          1.3 這將刪除特定于平臺的依賴項,并允許您使用Python輕松開發跨平臺應用程序!

          2 準備:

          =====

          2.1 官網地址:

          https://github.com/dddomodossola/remi
          https://remi.readthedocs.io/en/latest/

          2.2 環境:

          華為筆記本電腦、深度deepin-linux操作系統、谷歌瀏覽器、python3.8和微軟vscode編輯器。

          2.3 安裝:

          pip install remi
          #本機安裝
          sudo pip3.8 install remi
          sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple remi

          3 Hello world:

          ==========

          3.1 代碼:注釋版

          import remi.gui as gui
          from remi import start, App
          #定義類
          class MyApp(App):
              def __init__(self, *args):
                  super(MyApp, self).__init__(*args)
          #以上3行代碼,固定初始化
              
              def main(self):
                  #實例化一個VBox,大小設置
                  wid=gui.VBox(width=300, height=200)
                  #窗口的標簽label=顯示文本,大小比例法設置
                  # 注意\n代表換行,但需要配合style={"white-space":"pre"},才起作用
                  #preserves newline==保留換行符
                  self.lbl=gui.Label('Hello\n World', width='80%', height='50%',style={"white-space":"pre"})
                  #按鈕和名稱、大小設置,支持中文
                  self.bt=gui.Button('Press me=點擊我!', width=200, height=30)
                  #綁定按鈕的點擊事件,調用函數
                  self.bt.onclick.do(self.on_button_pressed)
                  #adding the widgets to the main container
                  #將小部件添加到主容器wid,有時候上面實例化用container=主容器
                  wid.append(self.lbl)
                  wid.append(self.bt)
                  return wid
          
              # listener function==監聽功能
              #調用點擊按鈕函數;emitter==發射器
              def on_button_pressed(self, emitter):
                  self.lbl.set_text('Hello World!')
                  
          if __name__=="__main__":
              # starts the webserver
              # 主要參數
              # start(MyApp,address='127.0.0.1', port=8081, multiple_instance=False,enable_file_cache=True, update_interval=0.1, start_browser=True)
              #start(MyApp, debug=True, address='0.0.0.0', port=0)  #本機測試地址改動無效,為默認地址
              start(MyApp, debug=True)  #端口指定無效,也不是默認8081,估計本機端口已經被占用

          3.2 操作和效果:

          4 Bootstrap:

          =========

          4.1 代碼:bootstrap.py

          import remi.gui as gui
          from remi import start, App
          
          class MyApp(App):
              def __init__(self, *args):
                  super(MyApp, self).__init__(*args)
          
              def main(self):
                  #引入在線Bootstrap的css文件
                  my_css_head="""
                      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
                      """
                  #引入在線Bootstrap的js文件
                  my_js_head="""
                      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
                      """
          
                  self.page.children['head'].add_child('mycss', my_css_head)
                  self.page.children['head'].add_child('myjs', my_js_head)
                 #主窗口實例化,定義大小和樣式
                  main_container=gui.VBox(width='500px', height='500px', style={'margin':'0px auto','padding':'10px'})
                  #label=標簽
                  self.lbl=gui.Label("Label with Lock Icon=帶鎖圖標的標簽")
                  #樣式選擇
                  self.lbl.add_class("glyphicon glyphicon-lock label label-primary")
                  #輸入框
                  self.tf=gui.TextInput(hint='Your Input')
                  #樣式選擇
                  self.tf.add_class("form-control input-lg")
                  #下拉選擇框
                  self.dd=gui.DropDown(width='200px')
                  #字體大小
                  self.dd.style.update({'font-size':'large'})
                  #樣式選擇
                  self.dd.add_class("form-control dropdown")
                  #下拉框內容選擇
                  self.item1=gui.DropDownItem("First Choice")
                  self.item2=gui.DropDownItem("Second Item")
                  #定義self的功能,目前未定義
                  self.dd.append(self.item1,'item1')
                  self.dd.append(self.item2,'item2')
                       
                  #Table=表格,第一個是表頭
                  myList=[  ('ID','Lastname','Firstname','郵編','城市'),
                              ('1','Pan','Peter','888888','上海'),
                              ('2','Sepp','Schmuck','123456','北京')  ]
                  #表格設置,內容,大小
                  self.tbl=gui.Table.new_from_list(content=myList,width='400px',height='100px',margin='10px')
                  #樣式選擇
                  self.tbl.add_class("table table-striped")
                  #按鈕設置
                  self.bt1=gui.Button("OK", width="100px")
                  #是Bootstrap樣式 Class:  btn-success
                  self.bt1.add_class("btn-success")                   
                  self.bt2=gui.Button("Abbruch",width="100px")
                  #Bootstrap Class:  btn btn-danger
                  self.bt2.add_class("btn-danger")                
                          
                  #Build up the gui,主窗口掛載下面項目
                  main_container.append(self.lbl,'lbl')
                  main_container.append(self.tf,'tf')
                  main_container.append(self.dd,'dd')
                  main_container.append(self.tbl,'tbl')
                  main_container.append(self.bt1,'btn1')
                  main_container.append(self.bt2,'btn2')
                  
                  return main_container
              
          if __name__=="__main__":
              # starts the webserver
              start(MyApp, debug=True)

          4.2 操作和效果圖:

          5 tabbox:

          =======

          5.1 代碼:

          import remi.gui as gui
          from remi import start, App
          
          class MyApp(App):
              def __init__(self, *args):
                  super(MyApp, self).__init__(*args)
          
              def main(self):
                  #按鈕
                  b1=gui.Button('Show second tab', width=200, height=30)
                  #表格框
                  tb=gui.TabBox(width='80%')
                  tb.append(b1, 'First')
                  
                  b2=gui.Button('Show third tab', width=200, height=30)
                  #tb.add_tab(b2, 'Second', None)
                  tb.add_tab(b2, 'Second')
          
                  b3=gui.Button('Show first tab', width=200, height=30)
                  #tb.add_tab(b3, 'Third', None)
                  tb.add_tab(b3, 'Third')
                  #3種方法
                  b1.onclick.do(self.on_bt1_pressed, tb, b2)
                  b2.onclick.do(self.on_bt2_pressed, tb, 'Third')
                  b3.onclick.do(self.on_bt3_pressed, tb, 0)
          
                  return tb
              
              #按鈕功能的定義,3種功能
              def on_bt1_pressed(self, widget, tabbox, refWidgetTab):
                  tabbox.select_by_widget(refWidgetTab)
          
              def on_bt2_pressed(self, widget, tabbox, refWidgetTabName):
                  tabbox.select_by_name(refWidgetTabName)
              
              def on_bt3_pressed(self, widget, tabbox, tabIndex):
                  tabbox.select_by_index(tabIndex)
          
          if __name__=="__main__":
              #網頁標題,standalone=False默認是不允許
              start(MyApp, title="Tab Demo=表格例子", standalone=False)

          5.2 操作和效果圖:

          6standalone:

          ======

          6.1 代碼: mian.py

          from remi import start, App
          #將 bootstrap.py腳本放在本代碼mian.py同一個目錄下
          from bootstrap import MyApp
          
          if __name__=="__main__":
              start(MyApp, standalone=True)

          6.2 代碼:bootstrap.py=4.1所指定代碼:

          6.3 注意啟動網頁服務器默認為不啟動(false),需要啟動則為standalone=True。

          6.4 操作和效果圖:

          把web網頁變成一個app的GUI

          7 附一張gif:

          代碼省略

          ===自己整理并分享===

          喜歡的人,可以點贊、關注、評論、轉發和收藏。

          Python提供的標準庫中有一個名為html的標準庫,該標準庫提供的功能很簡單,僅僅是把一些組成標簽的尖括號或者是一些特殊字符轉換成實體字符。

          這也是Python本身秉持的設計哲學,就是一個函數、一個模塊或者一個標準庫只專注于一件事或者是某一方面的事。



          我們先來大概了解該標準的組成

          
          >>> import html
          >>> dir(html)
          ['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_charref', '_html5', '_invalid_charrefs', '_invalid_codepoints', '_re', '_replace_charref', 'entities', 'escape', 'unescape']

          我們不管那些以_開頭的東東,把注意放在escape和unescape這兩個函數上。

          假設我有一些HTML,我擔心其中會包含一些可能危險的<script>標記。這時有一種方法就是把標簽的尖括號轉換成實體符號,從以上兩個函數的命名可以大概了解相應的功能。

          沒錯escape函數就是轉義的意思,就是把一些字符轉換為實體字符。比如“<”會轉換成“&+lt”、“>”會轉換成“&+gt”等等。(加號表示連接兩邊的符號)

          >>> import html
          >>> help(html.escape)
          Help on function escape in module html:
          
          escape(s, quote=True)
              Replace special characters "&", "<" and ">" to HTML-safe sequences.
              If the optional flag quote is true (the default), the quotation mark
              characters, both double quote (") and single quote (') characters are also
              translated.
          

          查看該函數的幫助可以了解到,它會把特定字符“&”,“<”,“>”等轉換成HTML安全的實體字符。該函數還有一個可選的標記參數,默認為True,意思就是該函數默認為把引用符號(“”、‘’)等一并轉換。

          >>> import html
          >>> demo="<h1>Hello World!,'</h1>"
          >>> html.escape(demo,quote=False)
          "<h1>Hello World!,'mangfu'</h1>"

          上面的例子中,我設置可選參數quote為False,則它并不會對引號(‘’)進行轉換。

          >>> import html
          >>> demo="<h1>Hello World!,'</h1>"
          >>> html.escape(demo)
          '<h1>Hello World!,'mangfu'</h1>'

          上面的例子中,我使用該函數默認的可選參數,從結果中可以看出函數輸出已經對引號(‘’)進行轉換。

          至于unescape函數,看該函數的名字就知道它的作用跟escape函數恰恰相反。

          可能大家對這些功能還不是很熟悉,但是這在Web開發方面是很重要的,如果你以后學習Django來搭建自己的網站,會碰到這個功能的。

          大家可以動手試試unescape函數。。。

          在的爬蟲越來越難了,不再和之前的那樣,隨便抓個包就可以找到相關的 url ,然后 post 一下或者 get 一下數據就出來了。還有一個可能就是可能你以前用來學習的爬蟲網站太簡單了,還沒有看見過那些猛的。上兩周我就想弄弄知乎登陸,參數的加密算是把 js 代碼扣出來了,但是只能在瀏覽器上運行,一換到 Python 執行就各種報錯,你不會 JavaScript 就什么都調不了,所以二話不說,開啟了新的大陸。那就開始吧!

          這是小編精心準備的一份Python爬蟲入門學習資料,關注,轉發,私信小編“01”即可免費領取!

          1. JavaScript 介紹

          JavaScript 是運行在 客戶端的語言,和你們說的 Java 是很不一樣的, Java 通常用于服務器端的。但是他們兩者也有相似之處,比如 JavaScript 的命名規范和名稱和 Java 相似。其他的好像就沒有什么了,哈哈。

          JavaScript 也是一門腳本語言,和 python 一樣,都是解釋性語言,即每運行一行代碼就解釋一行,只不過 JavaScript 的解釋器在瀏覽器內部。

          JavaScript 最初被應用是為了處理與表單相關的驗證,現在應用就更加廣了,可以說是幾乎無所不能,比如用來做服務端開發,命令行工具、桌面程序和游戲開發等。

          我在學了之后也跟著弄了兩個小的頁面游戲,懷念童年。




          2.JavaScript組成



          • EcmaScript:JavaScript 的核心,定義了 JavaScript 的基本語法和數據類型,也是我們今天所學的內容。
          • DOM:document odject model, 文檔對象模型,用于操作網頁中的頁面元素的,比如可以控制相關元素的增刪改查。
          • BOM:browser object model,, 瀏覽器對象模型, 用于操作瀏覽器窗口,比如彈出框,控制頁面滑動等。

          3.JavaScript 變量

          在了解變量之前,先要知道 JavaScript 代碼寫在那里:

          1. 行內,即寫在 html 的元素中,不建議
          2. 嵌入,即寫在 <script>標簽內,這個練習時可以使用,但當代碼量大的時候也不建議
          3. 外部,即 js 代碼都在另一個文件內,用鏈接的方式接入 html 文件即可,推薦使用這種方式。

          還有注釋:

          1. 單行注釋: // 注釋內容
          2. 多行注釋: /* 注釋內容 */

          3.1 變量的定義以及作用

          變量是計算機內存中存儲數據的標識符,根據變量名稱可以獲取到內存中存儲的數據。

          使用變量我們可以更方便的獲取或修改內存中的數據。

          3.2 定義變量

          使用 var 關鍵字來聲明變量,和 python 差不多,都是弱類型的語言,只不過 python 不需要使用關鍵字來聲明。



          注:console.log()這個方法只是在控制臺打印一下變量而已。

          3.3 變量的命名規則和規范

          1):規則-必須遵守的,不遵守就會報錯,就好比人類的法律

          • 由字母、數字、下劃線和 $ 組成,但是不能以數字開頭,如:12asd 這個名字就會報錯
          • 不能是關鍵字或保留字,比如 var、for等
          • 嚴格區分大小寫,就是說大寫和小寫都是不一樣的變量

          2):規范-建議遵守的,但不遵守也不會報錯,比如人類的道德

          • 變量名必須有意義,因為這樣別人才能看得懂,而且也利于維護,沒有意義的就像我們需要破解相關參數時看到的 js 混淆,想想就頭痛。
          • 遵守駝峰命名法,首字母小寫,后面單詞的首字母大寫,如:userName

          3.4 小案例

          了解完變量之后可以做個小案例:交換兩個值



          4. 數據類型

          JavaScript 的數據類型分兩種,一個為簡單數據類型,另一個為復雜數據類型。

          簡單數據類型有 Number、String、Boolean、undefined 和 null。一共五種

          復雜數據類型比如 object,這個以后遇到再說,慢慢來。

          4.1 Number

          Number 為數值固定的表示法,用來表示整數和浮點數的。它的字面量就是數值,那字面量是什么意思呢?字面量就是這個變量表示的值,



          比如上面變量 a 的字面量就是 12,b 的字面量就是 45。

          我們還可以使用 typeof 關鍵字來判斷這個數據類型



          除了使用上面的十進制來賦值,我們還可以使用八進制和十六進制



          八進制的數是以 0 開頭的,而十六進制的是以 0x 開頭的,其他的進制就不討論了。

          無論你寫何種進制,它的存儲還是以二進制來存儲的,所以這樣就弄成了浮點數的存儲精確度,浮點數只能精確到17位小數



          可以看到 兩個浮點數的相加不是很準確,所以不要在有浮點數的運算下做判斷,有可能會有你想不到的結果,如



          浮點數除了直接表示我們還可以使用科學計數法,當然,整數也是一樣可以使用的。



          Number 數據類型是有范圍的,但是不需要我們刻意去計,記住它的關鍵字就可以了。



          最后再說一個關鍵字:NaN:not a number,這個表示不是數值,當有兩個數據運算時,運算失敗就會返回這個值。我們也可以判斷一個數據類型是不是 NaN,使用 isNaN() 方法即可。



          4.2 String

          String 類型就是用單引號或雙引號括起來的內容就是了,和 python 的字符串類型也是差不多的。



          length 屬性是獲取字符串的長度。

          連接兩個字符串可以使用 + 進行連接, + 號兩邊不需要全是 String 類型也可以進行連接



          思考:如何打印出下列字符串

          1. 我是一個"帥哥"
          2. 我喜歡"學‘python’"

          這里面有單引號和雙引號,如果直接進行打印的話就會出錯,這時候我們就需要把這些有意義的字符給轉義符,轉成普通的字符



          根據上面的轉義符,就可以寫出下面語句了



          4.3 Boolean

          boolean 類型,字面量只有 truefalse,表示真假,即表示計算機的 1 和 0。

          當我們描述只有兩種結果的事物是可以使用這個。

          4.4 undefined 和 null

          1. undefined 表示一個聲明了沒有賦值的變量,所以變量的默認值就是undefined。
          2. null 只是表示為空,如果要想把該值設為 null, 只能手動賦值。

          5. 數據類型轉換

          5.1 其他類型轉 String 類型

          • 使用 toString() 方法



          需要注意:undefined 和 null 類型不能使用這個方法

          • 使用 String() 強轉,這個對任何類型都適用



          • 使用 + 連接符 連接空字符,這是最方便的,也是支持所有類型



          5.2 其他類型轉 Number 類型

          • 使用 Number() ,當轉不了的時候會返回 NaN,說明不是數值,在將 Boolean 類型轉 Number 時,true會轉為 1, false 會轉為 0。這個方法不支持將數字開頭帶有其它字符的字符串轉為數值類型,如 "12df"



          • 使用 parseInt() ,只能轉為整數,而且轉不了Boolean。但是可以轉以數字開頭而帶有字符的字符串。這個就可以應用在比如需要將 "16px" 轉為數值,就可以使用這個。轉不了時也會返回 NaN。
          • 使用 parseFloat() 可以轉為浮點數,當字符串為整數時也可以轉為整數。需要注意的是:當字符串中有兩個小數點的時候,只會轉第二個小數點之前的數字,后面的都當作字符串



          • 使用 + 或 - 來將值取正或取負。這個的功能和 Number 差不多。



          • 使用 - 來進行減法運算來轉。這個使用運算符就會先把左右兩邊的類型先轉為數值類型再運算,所以可以用來相減 0。至于 + 不行,是因為這個用來做字符串的拼接了。



          5.3 其他類型轉 Boolean 類型

          這個使用 Boolean() 來轉就可以了,所有類型都可以轉。轉為 false 的情況為 null、undefined、NaN、0 和 空字符串,其他情況均為 true。

          其實這個還可以使用隱式轉換,就是不需要自己手動轉,解釋器會自動幫我們轉,隱式轉換通常用在判斷語句的情況,隱式轉換可以減少代碼的書寫,等說到判斷語句再說,下面就有!

          6. 操作符

          操作符就是用來對數據類型進行操作的符號,每個語言的操作符都差不多,這里再說下可以更深刻一點!

          6.1 算術運算符

          + - * / % 五個,任何一個數 除 0 都為為無窮大,模 0 為 NaN



          6.2 一元運算符

          一元運算符就是只需要一個操作數的運算符,有 ++、-- 和 !

          • 前置++:如 a++,變量在前,這個是先將變量的結果返回再對自身加 1
          • 后置++:如 ++a,變量在后,這個是先將變量進行自身加 1,再把結果返回

          還有 -- 也是一樣的,只是 它是自身減 1,在運算中需要注意變量在一元運算符的順序。

          • ! 就是對操作數取反,而且返回的是 Boolean 類型



          6.3 邏輯運算符

          邏輯運算符有 && 、|| 和 !,! 因為只對一個操作數操作所以也屬于一元運算符。

          • &&:這個是與運算符,只有當兩邊都為 true 的時候才會返回 true,其他情況都返回 false。
          • ||:這個是或運算符,只有當兩邊都為 false 的時候才返回 false, 其他情況都返回 true。



          6.4 關系運算符

          關系運算符有 < > <=>===!====和 !==。運算完都是返回 Boolean 類型的,這里就不細說了,都差不多的,只說下==和===的區別,還有 !==和 !=的區別。==只判斷兩值的字面量相等不相等,不會判斷數據類型,而===會先去判斷數據類型再判斷字面量,!=和 !==的區別也是這樣。



          6.5 賦值運算符

          賦值運算符有 +=-=*=/=%== 六個。

          +=就是把左右兩邊的值相加起來再賦值給左邊的值,其他的也一樣,就不多說了。



          6.6 運算符優先級從高到低(運算順序)

          1. ()
          2. 一元運算符
          3. 算術運算符,同級時先 * / 再 + -
          4. 關系運算符:> >=< <=
          5. 相等運算符:=====!=!==
          6. 邏輯運算符:同級時先 && 再 ||
          7. 賦值運算符

          7. 流程結構

          JavaScript 的流程結構有三種,分別是順序結構,分支結構和循環結構,這個也和 python 差不多的。

          順序結構就是代碼是按順序從上到下執行的,分支結構就是按照給定條件的是否成立而執行不同的語句,循環結構就是重復執行某一段代碼。

          順序結構就不多說了,我們剛才運行的代碼就是順序結構的,現在先說下分支結構。

          7.1 分支結構

          使用分支結構可以使用 if 和 else 組成的語句,寫法和 python 差不多。



          單獨 if 語句

          說到判斷,就有個隱式轉換,就是 if 括號里面的值會將任意類型的值隱式轉換成 Boolean 類型。如下:



          另一種形式的分支語句:



          if-else 一起用

          這個 if-else 合用還有個簡單點的寫法,叫做三元運算符,語法為



          當表達式1 為 true 的時候,就會把 表達式2 的值給返回,否則返回 表達式3 的值,這個有一個缺陷,就是必須要有結果返回



          還有一種形式的分支語句:



          if-else if-if 三個合用

          上面的 三個合用我們也可以使用 switch 語句來改寫,這個是選擇關鍵詞。語法為



          改寫后:



          因為 case 的值只能是一個值,不能是范圍,所以用了個除法來解決,要不然需要寫大量的 case,還需要注意一點是一定需要記得寫 break,否則在匹配到相應的值之后它會一直往下運行不管 case 值是否對應,直到遇到 break 或者 全部運行完

          7.2 循環結構

          JavaScript 的循環結構也有 while for語句,但他還有 do-while語句。

          • for語句:一般在確定了循環的次數就會使用這個比較方便,語法為:



          這個先去執行初始化表達式1, 然后去執行判斷表達式2,符合條件就會執行循環體,循環體執行完之后就執行自增表達式3,再去判斷,接下來就是重復剛才的動作,直到不滿足判斷表達式2



          • while 語句:在無法確定循環次數的時候就可以用這個,使用這個需要注意循環結束的條件,以免寫了死循環。語法為:



          滿足循環條件之后就執行循環體,然后再去執行循環條件,接下來就是重復剛才的動作直到不滿足條件



          • do-while 語句:這個也是在不知道循環次數的時候使用,但是當循環體無論如何都需要執行一次的話就可以選擇使用這個。語法為:



          先去執行循環體,再去判斷循環條件,接下來就是重復剛才的動作直到循環條件不滿足

          在循環結構中還可以使用 break 和 continue 來對循環進行跳出的操作。break 就是跳出整個循環,就是循環結束,而 continue 是跳出本次循環,接著下一次的循環

          學習了循環之后,我們也可以嘗試著自己打印一個三角形,或者 99 乘法表來滿足一下自己。





          這兩個的思路都是差不多的,只要你搞定了第一個三角形的思路,下面的乘法表自然就迎刃而解了,這里就不多說了


          主站蜘蛛池模板: 伊人色综合网一区二区三区| 亚洲av高清在线观看一区二区| 国产激情一区二区三区 | 久久精品国产一区二区| 亚洲中文字幕在线无码一区二区| 国产精品第一区第27页| 无码av中文一区二区三区桃花岛| 无码人妻AV免费一区二区三区| 一区二区三区视频免费| 日韩高清一区二区三区不卡| 狠狠色综合一区二区| 无码人妻精品一区二区在线视频 | 国产日韩一区二区三免费高清| 成人无号精品一区二区三区 | 亚洲色欲一区二区三区在线观看| 日本一区高清视频| 亚洲sm另类一区二区三区| 91久久精品午夜一区二区| 国产一区二区三区久久| 日韩免费视频一区二区| 亚洲av午夜福利精品一区人妖| 国产一区二区视频在线播放| 午夜视频久久久久一区 | 另类一区二区三区| 日韩综合无码一区二区| 伊人久久精品无码av一区| 99久久精品国产免看国产一区| 精品国产AⅤ一区二区三区4区| 中文字幕一区二区三区四区 | 日本一区二区三区日本免费| 国产综合视频在线观看一区| 福利片福利一区二区三区| 极品少妇伦理一区二区| 久久久久国产一区二区| 国产一区二区在线看| 国内精品一区二区三区东京| 久久精品日韩一区国产二区| 四虎一区二区成人免费影院网址| 一区二区福利视频| 无码人妻精品一区二区三区在线| 精品无码成人片一区二区98|