亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > Python > 正文

python應(yīng)用程序Hypy實(shí)例教程

2024-09-09 19:03:44
字體:
供稿:網(wǎng)友

重要的類和方法
—————————-

hdatabase
~~~~~~~~~~~
表示索引后的數(shù)據(jù)存儲.

關(guān)鍵方法: db.open(filename,mode), db.close(), db.putdoc(document), db.search(condition)

hdocument
~~~~~~~~~~

標(biāo)示一條被索引并存儲的記錄.

關(guān)鍵方法: doc.addtext(text), doc.addhiddentext(text), doc.encode(encoding)

hdocument 的行為類似字典, key 保存記錄的元數(shù)據(jù)(比如字段名)
比如 doc[u’@uri’] 返回文檔(記錄)的 @uri 屬性. 它支持所有的字典方法.

hhit
~~~~~~
hdocument 的一個子類, 表示搜索結(jié)果中的一條記錄.  它擁有 hdocument 的全部特性, 還多了一個關(guān)鍵方法: result.teaser(wordlist)

hresults
~~~~~~~~~~

代表搜索結(jié)果, 它是 hhit 的集合. 關(guān)鍵方法: results.hitwords(), results.pluck(attr)

hresults 的行為類似字典, 這樣你就可以迭代它.

hcondition
~~~~~~~~~~~

查詢對象, 用來實(shí)施一次搜索. 帶著搜索參數(shù)(如關(guān)鍵字, 返回的最大結(jié)果數(shù), 或者其他元數(shù)據(jù))創(chuàng)建一個查詢實(shí)例.

關(guān)鍵方法: cond.addattr(attributeexpression), cond.setorder(orderexpression)

例子
——–

后面例子的代碼依賴前面的例子. 如果你打算運(yùn)行所有的例子, 你最好從上到下順序運(yùn)行. 如果你只是隨便看看, 那就無所謂了, 挑你感興趣了例子閱讀就可以了.

打開一個索引庫
~~~~~~~~~~~~~~~~

在使用索引庫(或者稱之為數(shù)據(jù)庫)之前, 必須先(指定一個磁盤路徑)創(chuàng)建它.

創(chuàng)建索引庫的標(biāo)志和 python 內(nèi)建函數(shù) open() 一樣:

‘r’ :flag
只讀方式打開
‘w’ :flag
如果文件存在, 先刪除或清空, 然后打開文件, 準(zhǔn)備寫入數(shù)據(jù)
‘a’ :flag
為寫入而打開文件, 如果文件不存在, 自動創(chuàng)建之(最常用的方式)

例子:

from hypy import *   # 在生產(chǎn)環(huán)境不要這樣做
# import * 是一個壞習(xí)慣, 我在這兒這么寫只是圖一時省事.

index = ‘breakfast/’
db = hdatabase()
db.open(index, ‘w’) # 創(chuàng)建新庫, 舊庫如果存在則刪除之
db.close()
db.open(index, ‘a’)

抓取內(nèi)容
~~~~~~~~

hypy 本身不是 web 爬蟲, 不過因?yàn)樗蕾?hyper estraier, 所以也就順手擁有了爬蟲的功能. 妙事一樁! 下面展示來如何使用 hyper estraier’s spider, 它的名字叫 estwaver. 關(guān)于 estwaver 的更多細(xì)節(jié)請問 google .

(bash 語法) 例子:

$ cd ~/projects/
$ estwaver init hypysite
2009-02-21t23:18:45z    info    the root directory created

estwaver init 做的事情和上面例子中的 db.open(index,’w') 基本一樣, 有一點(diǎn)不同, 就是它還創(chuàng)建了一個樣板配置文件: hypysite/_conf.

編輯這個配置文件. 修改最頂部的 seeds 為你打算抓取的 url. 如果你打算限制一下抓取范圍, 可以修改定義允許訪問 url 的正則表達(dá)式.

# 原始文件
seed: 1.5|http://hyperestraier.sourceforge.net/uguide-en.html
seed: 1.0|http://hyperestraier.sourceforge.net/pguide-en.html
seed: 1.0|http://hyperestraier.sourceforge.net/nguide-en.html
seed: 0.0|http://qdbm.sourceforge.net/

# allowing regular expressions of urls to be visited
allowrx: ^http://

我修改后的文件如下, 我增加了幾條規(guī)則以避免對內(nèi)建的 wiki 內(nèi)容再次索引

# 我的修改
seed: 1.0|http://mysite.goonmill.org/

allowrx: ^http://(|[a-za-z0-9_]*/.)goonmill/.org
denyrx: ^http://wiki/.goonmill/.org/help
denyrx: ^http://wiki/.goonmill/.org/.*wiki
denyrx: ^http://wiki/.goonmill/.org/.*/?action=
denyrx: ^http://wiki/.goonmill/.org/systempages

# 保留剩下的 denyrx 不動.

現(xiàn)在可以用 estwaver crawl 命令來抓取內(nèi)容了, 注意要告訴它索引建立在什么地方(./hypysite).

$ estwaver crawl hypysite
2009-02-21t23:44:43z    info    db-event: status: name=hypysite/_index …
2009-02-21t23:44:43z    info    crawling started (continue)
2009-02-21t23:44:43z    info    fetching: 0: http://goonmill.org/
2009-02-21t23:44:44z    info    seeding: 1.000: http://goonmill.org/
2009-02-21t23:44:45z    info    [1]: fetching: 0: http://goonmill.org/
2009-02-21t23:44:45z    info    [2]: fetching: 1: http://goonmill.org/cory

2009-02-21t23:47:02z    info    db-event: closing: name=hypysite/_index …
2009-02-21t23:47:02z    info    finished successfully

crud (create/read/update/delete) 創(chuàng)建/閱讀/更新/刪除
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果你的內(nèi)容不是來自抓取, 或者需要手工添加內(nèi)容, 我們提供了下面的例子來直接訪問 documents.

簡單例子:
^^^^^^^^^

doc = hdocument(uri=u’http://estraier.gov/example.txt’)
doc.addtext(u”hello there, this is my text.”)
db.putdoc(doc)

我僅僅添加了一個簡單文檔到索引庫, 該文檔的 uri 屬性是 http://estraier.gov/example.txt. 注意! 無論是 uri 還是 text 都是 unicode 字符串. hypy 總是要求 unicode 字符串

只有索引庫刷新之后, 這篇文檔才能被搜索到. 以下操作會刷新索引庫:

* 調(diào)用索引庫對象的 close() 方法關(guān)閉掉
* 調(diào)用索引庫對象的 flush() 方法明確刷新索引
* 如果 autoflush 選項(xiàng)打開的話, 調(diào)用 putdoc() 方法也可以刷新索引庫

打開 autoflush 選項(xiàng)的方式:

# db = hdatabase(autoflush=true)  ## 或者
db.autoflush = true
# 打開這個選項(xiàng)的操作本身并不刷新索引庫, 所以接下來要手工執(zhí)行一句
db.flush()

tip

autoflush 會增加磁盤 io 負(fù)載, 為提高性能, 當(dāng)你要索引大批文檔時, 請務(wù)必關(guān)掉 autoflush 選項(xiàng), 你應(yīng)該每索引 n 個文件, 手動執(zhí)行一次 flush(), 這個 n 的值要大到能夠顯著降低磁盤負(fù)載, 并且不會填滿你的內(nèi)存. 自己把握吧, 嘿嘿.

所有的文檔都要有一個 @uri 屬性, 以便初始化 hdocument() 對象. 不過, 你也可以添加任意的其他命名屬性到文檔中.

doc2 = hdocument(uri=u’http://estraier.gov/pricelist.txt’)
doc2.addtext(u”"”coffee: $2.00
toast: $1.00
eggs (2, any style): $3.00          eggs (9, any style): $13.50
eggs (3, any style): $4.50          eggs (10, any style): $15.00
eggs (4, any style): $6.00          eggs (11, any style): $16.50
eggs (5, any style): $7.50          eggs (12, any style): $18.00
eggs (6, any style): $9.00          eggs (13, any style): $19.50
eggs (7, any style): $10.50         eggs (14, any style): $21.00
eggs (8, any style): $12.00         eggs (15, any style): $22.50

with apologies to the new yorker for this joke”"”)
doc2[u’maxprice’] = u’22.50′
doc2[u’minprice’] = u’1.00′
db.putdoc(doc2)

有些屬性是自動生成的:

print doc[u’@id’]
## prints 1
print doc[u’@uri’]
## prints http://estraier.gov/example.txt

你可以通過指定一個 id 從索引庫中移除特定的文檔, 也能通過其他內(nèi)建的屬性來移除任意一個文檔

db.remove(id=1)
db.putdoc(doc) # 把它放回去, 以便在刪除它一次
db.remove(doc)
db.putdoc(doc) # 再加進(jìn)去
db.remove(uri=u’http://estraier.gov/example.txt’)
# 注意, 每次我們添加這個文檔, 都會獲得一個新的 id
print doc[u’@id’]
## prints 4

刪除文檔, 再把它放回去這種做法, 就是更新文檔的標(biāo)準(zhǔn)做法. (哈哈, 原來這樣!)

那么, 嗯, 我怎么知道索引庫里一共有多少個文檔? python 內(nèi)建函數(shù) len() 可以告訴你答案. 現(xiàn)在我們來確認(rèn)一下 db 里還剩一個文檔:

print len(db)
## prints 1

你可能猜到, 你能夠通過 uri 屬性獲取一個 document, 使用類似字典的獲取元素的語法:

print db[u’http://extraier.gov/pricelist.txt’]
## prints @digest=caacaefddcc1fd244de251723b0814be
##        @id=2
##        @uri=http://estraier.gov/pricelist.txt
##        …

現(xiàn)在打印出來的是 “draft” 格式, 這是這篇文檔的內(nèi)部表示, 也就是str(doc) 的結(jié)果. 我們不推薦用這樣的手段獲取文檔. 你應(yīng)該用 encode() 方法來得到自己想要的表示:

print doc2.encode(’utf-16′)
## prints ÿþc^@o^@f^@f^@e^@e^@:…

創(chuàng)建文檔的復(fù)雜例子
~~~~~~~~~~~~~~~~~~~~

hypy 沒有提供一種直接的方式?jīng)Q定搜索結(jié)果的權(quán)重, 有一種變通的方式, 就是你在做索引的時候決定權(quán)重. 如果你使用 estwaver 抓取資料, 改變 seed 的值: 每行不同的 seed 值, 會導(dǎo)致不同的權(quán)重. 如果你手工添加文檔, doc.addhiddentext(text) 可以幫你改變某個關(guān)鍵詞的權(quán)重.

文檔的權(quán)重主要是根據(jù)搜索關(guān)鍵字在該文檔出現(xiàn)的次數(shù)計(jì)算得來的. 如果你想讓某個關(guān)鍵字所占的權(quán)重特別大, 很容易, 簡單的添加一段隱含文本:

doc5 = hdocument(u’http://estraier.gov/weighted.txt’)
doc5.addtext(u”this is my boom-stick.”)
doc5.addhiddentext(u”eggs ” * 30)
db.putdoc(doc5)

當(dāng)搜索 eggs 關(guān)鍵字時, 第三個文檔的得分將超過 doc2 . 當(dāng)你打印它的時候, 你看不到這些隱含的文檔.

print doc5.encode(’utf-8′)
# prints this is my boom-stick.

搜索, 讀取搜索結(jié)果
~~~~~~~~~~~~~~~~~~~~~

那么, 怎么進(jìn)行搜索 ? 簡單的很: 構(gòu)建查詢條件, 然后調(diào)用 db.search(condition). 搜索結(jié)果對象是一個類似列表的對象.

cond = hcondition(u’eggs’)
results = db.search(cond)
for doc in results:
print doc[u’@id’]
# prints 5 then 2

# 使用 pluck 方法能得到每個結(jié)果文檔的某一屬性:

print results.pluck(u’@id’)
# prints [u’5′, u’2′]

搜索關(guān)鍵字還支持通配符:

cond = hcondition(u’egg*’)
results = db.search(cond)
print len(results)
# prints 2
print results[0][u’@uri’]
# prints …/weighted.txt

還有些其他的模式. 默認(rèn)搜索模式是 “simple”, 多個搜索關(guān)鍵字取其交集 ( 與 查詢). 通過在查詢條件中增加 matching 參數(shù), 可以改變這一默認(rèn)行為(變成 或 查詢), 就是不指定 matching 參數(shù), 也有別的辦法改變默認(rèn)行為, 在關(guān)鍵字中使用特殊語法. 建議你使用關(guān)鍵字語法, 這樣能靈活的控制搜索結(jié)果.

doc6 = hdocument(uri=u’http://estraier.gov/spam.txt’)
doc6.addtext(u’spam and eggs’)
db.putdoc(doc6)  # document @id is 6

# simple, 與 查詢:
print db.search(hcondition(u’spam* eggs*’)).pluck(u’@id’)
# prints [u’6′]

# union, 或 查詢
print db.search(hcondition(u’eggs spam’, matching=’union’)).pluck(u’@id’)
# prints [u’5′, u’2′, u’6′]

# unions with simple matching - you cannot use wildcard matches with
# matching=’union’ but you can do so with ‘|’ syntax
print db.search(hcondition(u’egg* | spam’)).pluck(u’@id’)
# prints [u’5′, u’2′, u’6′]

hyper estraier 用戶指南里有完整的搜索語法.

最后, 你可以獲取一個文檔的抽象, 稱為 “teaser”, 嗯, 就是使用一個叫 teaser() 的方法得到它. 這個方法目前支持兩種速度輸出格式, html 和 rst. 你必須以列表的形式提供要高亮的關(guān)鍵字.

words = [u’toast’]
results = db.search(hcondition(u’ ‘.join(words)))
hit = results[0]
print hit.teaser(words) # default is ‘html’
# prints coffee: $2.00 <strong>toast</strong>: $1.00 eggs (2, …

# 另一種強(qiáng)調(diào)搜索關(guān)鍵字:
words = results.hintwords()

print hit.teaser(words, format=’rst’)
# prints coffee: $2.00 **toast**: $1.00 eggs (2, …

屬性搜索
~~~~~~~~~~~~

hypy 使用一種功能強(qiáng)大的語法支持屬性搜索

cond = hcondition()
cond.addattr(u’@id streq 5′)

print db.search(cond)[0][u’@id’]
# prints 5

后面的例子就比較輕松了, 我們也可以稍事休息一會兒:

# 為了讓后面的例子清晰, 我定義了下面的函數(shù):
def attrsx(expr):
cond = hcondition()
cond.addattr(expr)
return u’ ‘.join(db.search(cond).pluck(u’@id’))

# 給 doc6 添加一些有趣的屬性
doc6[u’maxprice’] = u’100′
doc6[u’minprice’] = u’0′
doc5[u’date’] = u’2009-01-01′
doc6[u’date’] = u’2009-02-02′

# 提交這個 doc, 注意剛才的代碼并沒有刷新索引庫, 在這個例子里, 我們使用 autoflush
db.putdoc(doc6)
db.putdoc(doc5)

數(shù)字屬性搜索:

print attrsx(u’maxprice numge 50′)
# prints 6

# 注意: 沒有這個屬性的文檔, 會被看作是擁有這個屬性, 且屬性值為 “0′. 因此所有的文檔都匹配下面這個查詢條件:
print attrsx(u’minprice numle 50′)
# prints 2 6 5

# 兩個文檔匹配下面這個條件:
print attrsx(u’minprice numle 0.99′)
# prints 2 5

日期比較視為數(shù)字比較:

print attrsx(u’date numge 2008-12-31′)
# prints 6 5

print attrsx(u’date numge 2009-01-30′)
# prints 6

支持正則表達(dá)式:

print attrsx(u’@uri strrx (pricelist.txt|spam.txt)’)
# prints 2 6

你可以對條件取反, 得到 1 個匹配:

print attrsx(u’@uri !strrx (pricelist.txt|spam.txt)’)
# prints 5

當(dāng)然啦, 你能夠在短語搜索條件基礎(chǔ)之上增加屬性條件, 條件之間默認(rèn)是 與 結(jié)合.

cond = hcondition(u’spam’)
cond.addattr(u’minprice numle 50′)
print db.search(cond)[0][u’@id’]
# prints 6

其他搜索選項(xiàng)
~~~~~~~~~~~~~~

唷!這么多搜索選項(xiàng)!. 呵呵, 這還不是全部. 你還可以限制返回的結(jié)果總數(shù), 或者改變搜索結(jié)果的順序.

print db.search(hcondition(u’e*’)).pluck(u’@id’)
# prints [u’5′, u’2′, u’6′]
print db.search(hcondition(u’e*’, max=2)).pluck(u’@id’)
# prints [u’5′, u’2′] .. what did you expect?

如果你喜歡 max, 那么你也可能會喜歡 skip.

print db.search(hcondition(u’e*’, skip=2)).pluck(u’@id’)
# prints [u’6′]

要改變結(jié)果順序, 在 condition 對象上調(diào)用 setorder(order) 方法.  hyper estraier 用戶指南上有一個完整的 order 表達(dá)式參考. 下面的例子通過設(shè)置排序方法改變查詢結(jié)果的默認(rèn)順序.

cond = hcondition(u’e*’)

# natural (scored) order
print db.search(cond).pluck(u’@id’)
# prints [u’5′, u’2′, u’6′]

# numeric ascending
cond.setorder(u’@id numa’)
print db.search(cond).pluck(u’@id’)
# prints [u’2′, u’5′, u’6′]

# numeric descending
cond.setorder(u’@id numd’)
print db.search(cond).pluck(u’@id’)
# prints [u’6′, u’5′, u’2′]

其他參考文檔
————-

已經(jīng)講的足夠多啦, 如果你覺得還不過癮, 好辦!請接著去深挖:

1. api 文檔, 真的很棒!
2. hyper estraier 用戶指南描述了關(guān)鍵字搜索語法, 屬性搜索語法和排序語法.
3. hypy 的單元測試文件中有豐富的搜索語法的例子特別是 testdatabase.test_queries 和 testdatabase.test_condextras 中. 這些測試付給了 lib.py 中 100% 的代碼. 他們有完善的 文檔字符串 和 注釋; 象 skip 和 max 搜所還有各種各樣的比較例子等等全都有!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
欧美丰满美乳xxx高潮www| 欧美色大人视频| 亚洲区精品久久一区二区三区| 国产狂喷白浆在线观看视频| 伪装者免费全集在线观看| 亚洲白虎美女被爆操| 911国产精品| 欧洲av一区二区嗯嗯嗯啊| 欧美日韩色综合| 国产香蕉免费精品视频| 丁香久久五月| 日本片在线看| 久久午夜无码鲁丝片午夜精品| 亚洲校园欧美国产另类| 91theporn国产在线观看| 激情欧美一区二区三区在线观看| 日韩欧美在线网址| 91成人福利视频| 日韩少妇内射免费播放18禁裸乳| 激情视频免费| 一区在线观看免费| 亚洲精品在线视频播放| 91成人福利在线| 国产最顶级的黄色片在线免费观看| 亚洲人成网在线播放| 五十路在线视频| 天天插综合网| 色婷婷在线视频| 亚洲精品在线免费播放| 一区二区视频在线免费| 亚州成人av在线| www99热| 国产jjizz一区二区三区视频| 色欧美日韩亚洲| 亚洲人成绝费网站色ww| 欧美黄色网络| 91久久中文字幕| 亚洲精品乱码久久| 久草资源在线观看| 日本欧美在线视频免费观看| 被陌生人带去卫生间啪到腿软| 日韩av一级片| 丁香视频免费观看| 色999韩欧美国产综合俺来也| 亚洲成人777777| 伊人久久大香线蕉综合75| 色欧美在线观看| 制服丝袜亚洲播放| 免费国产高清| 99精品一区二区三区的区别| 小鲜肉gaygays免费动漫| 免费日韩av电影| 国产欧美一区二区三区不卡高清| 爽爽影院免费观看视频| 麻豆精品视频| 成人精品视频| 九七影院97影院理论片久久| 亚洲精选一区二区三区| 妺妺窝人体色www聚色窝仙踪| 欧美日韩在线三区| 老头老太做爰xxx视频| 中文精品视频一区二区在线观看| 麻豆成全视频免费观看在线看| 久久精品水蜜桃av综合天堂| 国产在线观看91一区二区三区| 久久中文资源| 女性生殖扒开酷刑vk| 日日噜噜夜夜狠狠视频欧美人| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲老司机av| 91超碰rencao97精品| 精品视频vs精品视频| www.激情网.com| 香蕉视频国产精品| 综合区小说区图片区在线一区| 亚洲一区二区美女| 久久久久久久久久久久久夜| 久久在线精品视频| 看全色黄大色大片免费久久久| 成人av一区二区三区在线观看| 91久久线看在观草草青青| 国产麻豆入在线观看| 欧美3p视频在线观看| 亚洲精品美女| 国产精品99一区二区三区| 亚洲36d大奶网| 国产精品白丝jk白祙喷水网站| 亚洲小说欧美另类社区| 国产成人小视频在线观看| 国产精品久久国产精品| 影音先锋人妻啪啪av资源网站| www.国产一区| 欧美视频中文一区二区三区在线观看| 亚洲毛片av| 精精国产xxxx视频在线| 欧美猛交ⅹxxx乱大交视频| 亚洲欧美色视频| 欧美人妻一区二区| 国精产品一区一区二区三区mba| 成年人黄色片视频| 久久久久看片| 超碰在线公开97| 国产精品一区二区a| 欧美成人午夜电影| 妓院一钑片免看黄大片| 中文字幕久热精品视频在线| 日本tube24xxxxx| 精品日韩一区| 国产精品少妇在线视频| 五月激情婷婷网| 91传媒视频在线播放| 免费污视频在线| 国产天堂亚洲国产碰碰| 你懂的国产精品永久在线| 成人区精品一区二区| 日日噜噜噜夜夜爽爽狠狠视频| 亚洲韩国日本中文字幕| 日本成人在线免费| 男人天堂网在线观看| 日韩电影在线观看完整版| 亚洲熟妇无码一区二区三区导航| 黄色aaa大片| 亚洲第一区中文99精品| 日韩一区二区三区在线免费观看| 欧美日韩无遮挡| 97成人资源| 亚洲成a人在线观看| 免费在线观看日韩| 国产精品二三区| 国产一区二区久久久久| 91视频播放| 婷婷综合亚洲| 久久国产精品免费看| 国产乱码精品一区二区三区忘忧草| freee性欧美| 黄网址在线看| xxx成人少妇69| 小草av在线播放| 国产成人精品午夜| 国产欧美一区二区三区视频| 国产精品影音先锋| 亚洲欧美一区二区不卡| 香蕉视频国产在线观看| 日韩成人伦理| 无人区在线高清完整免费版 一区二| 性一交一乱一色一免费无遮挡| 一本大道一区二区三区| 午夜看片在线免费| 女人公敌韩国| 在线天堂www在线国语对白| 欧美一级高潮片| 亚洲精品国产a久久久久久| 丝瓜av网站精品一区二区| 国产亚洲一区二区三区在线观看| 欧美日韩免费在线| 国产欧美日韩一区二区三区在线| 久久国产精品久久精品| 午夜在线不卡| 亚洲欧美日韩国产| 极品av少妇一区二区| 久草视频免费在线播放| 中文字幕成人在线观看| 一区二区三区四区在线| 欧美 国产 综合| 综合亚洲深深色噜噜狠狠网站| 欧美日韩xx| 亚欧洲精品在线视频| 好吊色欧美一区二区三区| 国产一区二区片| 国产黄色大片网站| 国产日韩久久| 国产精品美女久久久久av爽李琼| 亚洲激情在线观看视频免费| 亚洲精品tv| 国产精品免费看一区二区三区| 超碰在线公开免费| 精品欧美一区二区在线观看| 国产区美女在线| 91精品国产调教在线观看| 北岛玲一区二区三区四区| 99久久久久国产精品免费| 无人码人妻一区二区三区免费| 伊人久久久大香线蕉综合直播| 亚洲色图五月天| 五月花丁香婷婷| 成人激情动漫在线观看| jizzjizzjizzjizzjizzjizzjizz| 在线视频欧美亚洲| 中文字幕久久精品一区二区| 91香蕉视频网址| а√最新版在线天堂| 污视频软件在线观看| 在线影院国内精品| 羞羞视频在线免费看| 久久99久久久精品欧美| 精品孕妇一区二区三区| 日韩美女av在线| 2023国产一二三区日本精品2022| 色悠悠亚洲一区二区| 国产超碰人人模人人爽人人添| 超碰国产精品久久国产精品99| 亚洲黄色一级大片| 91黄色精品| 中文字幕不卡的av| 99视频精品全部免费在线视频| 国产精品v片在线观看不卡| 在线观看视频你懂的| 无码精品一区二区三区在线播放| 国产亚洲精品bv在线观看| 暖暖日本在线观看| 极品少妇一区二区三区| 无套内谢丰满少妇中文字幕| 亚洲精品乱码久久久久久动漫| 亚洲精品20p| 91视频啊啊啊| 91麻豆国产视频| 欧美日韩在线观看一区二区| 18岁免费网站| 久久福利精品| 亚洲aⅴ怡春院| 亚洲综合激情五月| 国产不卡一二三区| 成人欧美一区二区| 高清精品久久| 日韩有码第一页| yw视频在线观看| 国产精品久久久久久久免费软件| 亚洲aⅴ在线观看| 亚洲二区视频在线| 亚洲av无码国产综合专区| 爽爽爽爽爽爽爽成人免费观看| 日韩av影院在线观看| 日韩 欧美 亚洲| 国产日韩v精品一区二区| 国产精品久久久久久久久久久不卡| 亚洲午夜激情免费视频| 精品国产乱码久久久久久果冻传媒| 蓝色福利精品导航| av观看成片免费网站| 一区久久精品| 丁香激情五月婷婷| jizz中国女人| 人成网站在线观看| 天天操,天天操| www视频免费| 亚洲调教视频在线观看| 久久爱www| 亚洲电影成人| 一区二区三区导航| 欧美丰满少妇xxxxx做受| 国产午夜视频在线播放| 老太脱裤让老头玩ⅹxxxx| 91视频综合网| 欧美日韩亚洲激情| 久久综合九色欧美狠狠| 色综合久久久久综合99| 激情丁香久久| 狂野欧美性猛交xxxx乱大交| 免费电影一区二区三区| 国产精品成人3p一区二区三区| 黄色三级视频在线播放| 欧美特黄级在线| 涩涩涩在线视频| 在线黄色.com| 亚洲蜜臀av乱码久久精品蜜桃| 日韩视频在线你懂得| 四虎国产成人永久精品免费| 18禁一区二区三区| 日韩另类视频| 成人性生活视频免费看| 国产字幕在线看| 一级做a爰片久久毛片美女图片| 亚洲激情视频在线播放| 欧美另类videosbestsex日本| 4438欧美| 国产在线成人精品午夜| 风间由美一区| 污污的视频在线观看| 久久国产日韩欧美| 91日韩久久| 猫咪av永久| 国产激情精品一区二区三区| 日韩在线观看成人| 天堂精品在线视频| 国产视频亚洲| 国产美女视频一区二区| www.夜色| 久草精品在线| 国产伦精品一区二区三区照片91| 国产欧美日韩精品a在线观看| 亚洲字幕av一区二区三区四区| 亚洲国产精品久久不卡毛片| xxx.xxx欧美| 99精品国产99久久久久久福利| 好吊视频一二三区| 在线看日本不卡| 欧美va亚洲va香蕉在线| 一个人看的视频www| 日韩欧美亚洲一二三区| 波多野结衣在线高清| 又粗又大的机巴好爽欧美| 欧美亚洲色图校园春色| 538在线观看| 精品久久免费观看| 国产精品日韩精品在线播放| 美女被久久久| 一区二区三区丝袜| 2021中文字幕在线| 久久国产精品国语对白| 日韩极品视频在线观看| 久久久久亚洲精品中文字幕| 无码人妻熟妇av又粗又大| 波多野结衣在线观看| www.操.com| 五月激情丁香婷婷| 国产精品久久精品牛牛影视| 韩日在线一区| 99久久综合狠狠综合久久| 国产精品国产三级国产专区51| 日本道在线观看| 欧美疯狂做受xxxx高潮| 蜜桃视频涩涩| 免费看成年人视频在线观看| 91女主播在线观看| 国产精品成av人在线视午夜片| 国产伦精品一区二区| 欧美精品momsxxx| 色网站国产精品|