亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python爬蟲的大學(xué)校園公眾號開發(fā)

        2019-07-10 07:11:54梁金龍鄒小林
        珠江教育論壇 2019年1期
        關(guān)鍵詞:爬蟲段子開發(fā)者

        梁金龍,鄒小林

        據(jù)統(tǒng)計(jì),目前微信注冊用戶數(shù)量已接近10億[1]。由于微信用戶具有量大,關(guān)注度高、支持群發(fā)等特點(diǎn),政府部門、企業(yè)、事業(yè)單位、協(xié)會(huì)、商家、學(xué)校,甚至個(gè)人都紛紛注冊使用公眾號。但很多公眾號被受眾關(guān)注得不多,主要原因是這些公眾號難以提供有質(zhì)量的推文和服務(wù)。為了提高公眾號的關(guān)注度,一些高校教師進(jìn)行了調(diào)查研究,有研究[2]認(rèn)為用戶的期望確認(rèn)、感知有用、感知娛樂、內(nèi)容豐富度以及感知服務(wù)質(zhì)量都顯著影響用戶對公眾號滿意度和持續(xù)使用意愿。也有研究[3]認(rèn)為高校微信公眾號的使用意愿主要受到感知有用性、感知娛樂性與信息感知質(zhì)量3 個(gè)因素影響。可見微信公眾號的有用性、娛樂性與有質(zhì)量的信息是至關(guān)重要的。針對校園公眾號被關(guān)注較少這個(gè)問題,采用Python網(wǎng)絡(luò)爬蟲技術(shù)對公眾號進(jìn)行二次開發(fā),在注冊的公眾號中增加公眾號推文、網(wǎng)絡(luò)新聞、網(wǎng)絡(luò)笑話等信息自動(dòng)推送,為學(xué)校校園文化建設(shè)提供可行方案。

        一、公眾號的二次開發(fā)接口

        微信公眾號與開發(fā)者的服務(wù)器搭建后,可以通過調(diào)用公眾號的接口實(shí)現(xiàn)公眾號二次開發(fā)。微信平臺提供的公眾號接口有“獲取access_token”接口、“接收事件推送”接口、“自動(dòng)回復(fù)”接口、“自定義菜單”接口。

        調(diào)用“獲取access_token”接口時(shí),需要傳遞3 個(gè)參數(shù):grant_type、appid和secret,其中授權(quán)類型參數(shù)grant_type是客戶端證書client_credential;參數(shù)appid 是公眾號開發(fā)識別碼ID;參數(shù)secret是開發(fā)者密碼。采用https的GET請求方式調(diào)用“獲取access_token”接口,請求的網(wǎng)頁地址是https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=AppSecret。“自定義菜單”接口的傳輸參數(shù)為access_token和自定義菜單數(shù)據(jù)包。采用https請求的POST方式調(diào)用“自定義菜單”接口,請求的網(wǎng)頁地址是https://api.weixin.qq.com/cgi- bin/menu/create?access_token=ACCESS_TOKEN。自定義菜單數(shù)據(jù)包結(jié)構(gòu)是Json 結(jié)構(gòu),Json 結(jié)構(gòu)以“名稱值對”形式儲存信息,代碼類似為:{"button":[{"name":"網(wǎng)絡(luò)爬蟲", "sub_button": [{"type": "click", "name": "微信公眾號推文","key":"V1"}]}]}。其中名稱為"button"的值是一級菜單列表,可在里面創(chuàng)建3 個(gè)一級菜單;第一個(gè)"name"的值是一級菜單名;"sub_button"的值是二級菜單列表,可在里面創(chuàng)建5 個(gè)二級菜單;"type"的值是二級菜單的響應(yīng)動(dòng)作類型,有click 和view 等類型;第二個(gè)"name"的值是二級菜單名,"key"的值是二級菜單的KEY 值,可自定義。其中click是點(diǎn)擊推送事件,用戶點(diǎn)擊click類型按鈕后,微信服務(wù)器會(huì)通過“接收事件推送”接口推送XML 結(jié)構(gòu)數(shù)據(jù)給開發(fā)者,并且?guī)习粹o中開發(fā)者填寫的KEY 值,開發(fā)者可以通過KEY值與用戶進(jìn)行交互。

        “接收事件推送”接口是微信服務(wù)器把POST 消息的XML 類型數(shù)據(jù)包推送給開發(fā)者服務(wù)器,即微信用戶和公眾號產(chǎn)生交互的過程中,開發(fā)者可以通過接口獲取用戶的操作信息。XML 數(shù)據(jù)包中包含開發(fā)者微信號(ToUserName)、微信用戶帳號(FromUserName)、消息創(chuàng)建時(shí)間(CreateTime)、消息類型(MsgType)、事件類型(Event)和事件KEY 值(Event-Key)。開發(fā)者根據(jù)消息類型、事件類型和事件KEY 值對微信用戶的操作進(jìn)行判斷和處理。

        “自動(dòng)回復(fù)”接口是開發(fā)者服務(wù)器把回復(fù)消息的XML結(jié)構(gòu)數(shù)據(jù)包推送給微信服務(wù)器。“接收事件推送”接口與“自動(dòng)回復(fù)”接口同時(shí)調(diào)用,實(shí)現(xiàn)公眾號自動(dòng)接收并回復(fù)用戶消息,可以回復(fù)文本信息、圖片信息、圖文信息等?!白詣?dòng)回復(fù)”接口回復(fù)的消息類型不同,XML 結(jié)構(gòu)數(shù)據(jù)包需要傳遞的參數(shù)也不同,但每個(gè)數(shù)據(jù)包都必須傳遞3 個(gè)參數(shù):微信用戶帳號(ToUserName)、開發(fā)者微信號(ToUserName)和消息創(chuàng)建時(shí)間(CreateTime)。特別強(qiáng)調(diào):“自動(dòng)回復(fù)”接口傳輸?shù)腡oUser-Name 和FromUserName 與“接收事件推送”接口接收的相反,開發(fā)時(shí)要分清楚?!白詣?dòng)回復(fù)”接口采用https 請求POST方式調(diào)用。

        二、網(wǎng)絡(luò)爬蟲相關(guān)原理

        網(wǎng)絡(luò)爬蟲是一種按照特定規(guī)則,自動(dòng)抓取網(wǎng)絡(luò)信息的程序或者腳本[4]。網(wǎng)絡(luò)爬蟲的結(jié)構(gòu)如圖1 所示,一般包括初始URL、網(wǎng)頁爬取模塊、網(wǎng)頁分析模塊和數(shù)據(jù)庫,其中網(wǎng)頁爬取模塊和網(wǎng)頁分析模塊是核心模塊。

        python爬蟲網(wǎng)頁爬取模塊的爬取方法通常有源碼爬取、抓包爬取。源碼爬取是用python 發(fā)起HTTP 請求直接獲取網(wǎng)頁的HTML源代碼;抓包爬取則是爬取HTTP請求中的傳輸數(shù)據(jù)包,通過對數(shù)據(jù)包url的直接訪問爬取數(shù)據(jù)包。

        圖1 網(wǎng)絡(luò)爬蟲原理圖

        網(wǎng)頁分析模塊解析方法包括正則表達(dá)式解析、Beautiful-Soup解析和Json解析。正則表達(dá)式是由一系列特殊字符和普通字符組成的字符集合[5],可匹配網(wǎng)頁源碼中特定字符串,提取相應(yīng)信息;BeautifulSoup解析則是應(yīng)用Python第三方庫Beautiful Soup 進(jìn)行解析,Beautiful Soup 將復(fù)雜的HTML 網(wǎng)頁轉(zhuǎn)換成一個(gè)復(fù)雜的樹形結(jié)構(gòu),樹形結(jié)構(gòu)每個(gè)節(jié)點(diǎn)都是Python 對象,所有對象可以歸納為4 種:Tag、BeautifulSoup、NavigableString、comment。Tag 對象與XML 或HTML 原生文檔中的tag 定義相同;NavigableString 類對象被Beautiful Soup用來包裝tag中的字符串,NavigableString 字符串與Python 中的Unicode 字符串定義相同;BeautifulSoup 對象表示的是一個(gè)文檔的全部內(nèi)容,大部分時(shí)候,可以把它當(dāng)作Tag對象;Comment 對象是一個(gè)特殊類型的NavigableString 對象。Beautiful Soup 庫支持最常用的CSS 選擇器,在Tag 或BeautifulSoup 對象的select()方法中傳入對象的字符串參數(shù),即可使用CSS 選擇器的語法找到該Tag[6],通過getText()方法可獲取Tag 中字符串。Json 是一種輕量級的數(shù)據(jù)交換格式,以“名稱值對”形式儲存信息,易于機(jī)器解析和生成,所以網(wǎng)絡(luò)傳輸數(shù)據(jù)一般采用Json。Json 解析是應(yīng)用Python 第三方庫“json”解析Json結(jié)構(gòu)的數(shù)據(jù)包,根據(jù)Json數(shù)據(jù)包中的“名稱”獲取“值對”信息。Json 解析使用方法有dumps()和loads(),dumps()是將Python對象編碼成JSON 字符串,loads()是將字符串解碼為Python 對象。

        三、工作思路

        開發(fā)工作主要包括2部分:大學(xué)校園公眾號開發(fā)平臺搭建和大學(xué)校園公眾號二次開發(fā)。大學(xué)校園公眾號開發(fā)平臺搭建包括:公眾號驗(yàn)證綁定服務(wù)器、用接口工具自定義公眾號的菜單;在云服務(wù)器上開發(fā)接收和處理微信信息的程序,搭建數(shù)據(jù)庫存放信息,封裝XML 數(shù)據(jù)包。大學(xué)校園公眾號二次開發(fā)包括:開發(fā)微信公眾號推文爬蟲,開發(fā)新聞爬蟲和開發(fā)段子爬蟲,將爬蟲部署到公眾號。

        大學(xué)校園公眾號開發(fā)的技術(shù)思路如圖2 所示。用戶進(jìn)行某個(gè)操作的消息會(huì)發(fā)到微信服務(wù)器;微信服務(wù)器發(fā)送消息的XML 數(shù)據(jù)包給開發(fā)者服務(wù)器;開發(fā)者服務(wù)器接收并解析數(shù)據(jù)包,判斷事件類型;如果消息不是自定義菜單事件,回復(fù)success,微信服務(wù)器確定開發(fā)者收到了粉絲消息,不會(huì)提示公眾號異常;如果是自定義菜單事件,根據(jù)事件KEY值判斷用戶點(diǎn)擊的爬蟲菜單,查詢該需求的爬蟲信息是否存在于數(shù)據(jù)庫;如果是,從數(shù)據(jù)庫提取信息,封裝成特定的XML 數(shù)據(jù)包,回復(fù)給微信服務(wù)器;如果否,運(yùn)行相應(yīng)的爬蟲爬取信息,存入數(shù)據(jù)庫再提取給微信服務(wù)器。

        圖2 大學(xué)校園公眾號開發(fā)的技術(shù)思路圖

        四、大學(xué)校園公眾號開發(fā)平臺搭建

        (一)公眾號綁定開發(fā)者服務(wù)器

        本文公眾號二次開發(fā)環(huán)境包括:web.py為網(wǎng)絡(luò)框架,python為開發(fā)語言和騰訊云服務(wù)器。運(yùn)用web.py搭建網(wǎng)頁,復(fù)制微信公眾平臺技術(shù)文檔[7]中“搭建服務(wù)”的測試代碼main.py 到開發(fā)者服務(wù)器,用命令提示符執(zhí)行命令:sudo python main.py 80,即可搭建能接收微信服務(wù)器信息的網(wǎng)頁。完成后,登錄公眾平臺官網(wǎng),在菜單“基本設(shè)置”中開啟公眾號的開發(fā)者模式,在“服務(wù)器配置”中修改配置。需要修改的參數(shù)有url、Token,其中“url”填寫開發(fā)者服務(wù)器搭建的網(wǎng)頁地址,“Token”可以自主設(shè)置,只用于驗(yàn)證開發(fā)者服務(wù)器。點(diǎn)擊提交按鈕,微信公眾平臺會(huì)對開發(fā)者服務(wù)器進(jìn)行驗(yàn)證,若token驗(yàn)證成功,會(huì)自動(dòng)返回基本配置的主頁面,點(diǎn)擊啟動(dòng)按鈕,即可綁定開發(fā)者服務(wù)器。

        (二)創(chuàng)建公眾號的菜單

        創(chuàng)建公眾號的菜單需要調(diào)用“獲取access_token”接口獲得access_token,再調(diào)用“自定義菜單”接口創(chuàng)建菜單。開發(fā)者可使用微信公眾平臺中“開發(fā)者工具”的在線接口調(diào)試工具,調(diào)用這2 個(gè)接口獲得access_token 和創(chuàng)建菜單。使用在線接口調(diào)試工具獲得access_token 需要修改的參數(shù)有appid和secret,修改好參數(shù)后,點(diǎn)擊“檢查問題”按鈕,即可在返回結(jié)果中獲得access_token。使用在線接口調(diào)試工具創(chuàng)建菜單的方法是,在“接口類型”中選擇“自定義菜單”,在“接口列表”中選擇“自定義菜單創(chuàng)建窗口”,粘貼access_token和菜單的Json 結(jié)構(gòu)代碼,點(diǎn)擊“檢查問題”按鈕,就可以創(chuàng)建菜單了[8]。本文設(shè)置3 個(gè)一級菜單網(wǎng)絡(luò)爬蟲、學(xué)習(xí)資源、學(xué)園活動(dòng);3個(gè)二級菜單:微信公眾號推文、新聞、段子;響應(yīng)動(dòng)作類型都是click;KEY值分別是“V1”“V2”“V3”。

        (三)開發(fā)者服務(wù)器的消息處理

        微信服務(wù)器通過“接收事件推送”接口把消息的XML類型數(shù)據(jù)包推送給開發(fā)者服務(wù)器。因本文以web.py 搭建網(wǎng)頁,可以用web.data()方法獲取微信服務(wù)器的XML 數(shù)據(jù)包。復(fù)制微信公眾平臺技術(shù)文檔[7]中“入門指引”的解析XML文檔receive.py,用以解析XML 數(shù)據(jù)包,獲取開發(fā)者微信號(ToUserName)、微信用戶帳號(FromUserName)等信息。根據(jù)XML 數(shù)據(jù)包中的消息類型(MsgType)、事件類型(Event)和事件KEY 值(EventKey)判斷用戶點(diǎn)擊的菜單。如果事件KEY值是“V1”,表明用戶點(diǎn)擊的菜單是“微信公眾號推文”,執(zhí)行代碼根據(jù)微信用戶帳號查詢數(shù)據(jù)庫中用戶表的公眾號推文編號,如果編號小于數(shù)據(jù)庫中公眾號推文表的公眾號推文表,則說明數(shù)據(jù)庫存量充足,可直接從數(shù)據(jù)庫中提取信息,以圖文消息類型回復(fù)用戶;如果存量不足,則微信公眾號推文爬蟲爬取信息,存入數(shù)據(jù)庫,再回復(fù)消息。如果事件KEY值是“V2”,表明用戶點(diǎn)擊的菜單是“新聞”,如果事件KEY值是“V3”則是“段子”,處理邏輯與點(diǎn)擊“微信公眾號推文”的處理邏輯類似,不過“新聞”以圖文消息類型回復(fù)消息,“段子”以文本消息類型回復(fù)消息。

        (四)數(shù)據(jù)庫的搭建

        在服務(wù)器下載并安裝MySQL 數(shù)據(jù)庫,運(yùn)用Python 的MySQLdb 庫連接和操作數(shù)據(jù)庫。用MySQLdb.Connect()的方法創(chuàng)建數(shù)據(jù)庫的連接“conn”,該方法可以指定數(shù)據(jù)庫的參數(shù):用戶名,密碼,主機(jī)等信息;通過獲取到的數(shù)據(jù)庫連接“conn”下的cursor()方法來創(chuàng)建游標(biāo);通過游標(biāo)操作execute()方法可以寫入純sql 語句;運(yùn)用sql 語句創(chuàng)建、查詢和更新表格。本文創(chuàng)建的數(shù)據(jù)庫的表主要有學(xué)生用戶表user_info、段子爬蟲表jokes_spider、新聞爬蟲表new_spider和公眾號推文表article_spider。學(xué)生用戶表user_info 記錄著用戶名、段子爬蟲編號、新聞爬蟲編號、公眾號推文編號;段子爬蟲表jokes_spider 記錄著段子爬蟲編號、段子內(nèi)容;新聞爬蟲表new_spider記錄著新聞爬蟲編號、新聞網(wǎng)址、新聞標(biāo)題、新聞圖片地址、新聞簡介;公眾號推文表article_spider 記錄著公眾號推文編號、公眾號推文網(wǎng)址、公眾號推文標(biāo)題、公眾號推文圖片地址、公眾號推文簡介。

        (五)封裝特定的XML數(shù)據(jù)包

        公眾號調(diào)用“自動(dòng)回復(fù)”接口給用戶回復(fù)消息時(shí),需要傳輸特定的XML數(shù)據(jù)包。開發(fā)者需封裝XML數(shù)據(jù)包,以在回復(fù)消息時(shí)調(diào)用。開發(fā)者根據(jù)用微信公眾平臺技術(shù)文檔[7]中“入門指引”的XML封裝文檔reply.py,把回復(fù)文本信息和圖文信息的XML 結(jié)構(gòu)封裝成函數(shù)。例如,封裝文本信息的XML 數(shù)據(jù)包需要3 個(gè)參數(shù):toUserName、fromUserName 和Content,Content 是回復(fù)消息的文本內(nèi)容。以Python 的字典構(gòu)造函數(shù)dict()建造一個(gè)空字典,在字典里建立映射關(guān)系。其中,用戶帳號toUserName 映射到ToUserName;開發(fā)者微信號fromUserName映射到FromUserName;數(shù)據(jù)庫提取的信息Content 映射到Content;運(yùn)用Python 中time 庫的time()方法記錄消息創(chuàng)建的時(shí)間,并映射到CreateTime。根據(jù)微信公眾平臺技術(shù)文檔[7]中的回復(fù)文本信息的XML結(jié)構(gòu),運(yùn)用Python的format()方法結(jié)構(gòu)化文本信息的XML數(shù)據(jù)包,即可封裝完畢。

        向用戶回復(fù)文本信息的XML 結(jié)構(gòu)如下。

        五、大學(xué)校園公眾號的二次開發(fā)

        (一)開發(fā)微信公眾號推文爬蟲

        微信公眾號的推文可通過搜狗搜索網(wǎng)站的微信搜索出,微信公眾號推文爬蟲可爬取微信搜索頁獲得推文信息。其工作流程是用源碼爬取微信搜索頁的url 獲取網(wǎng)頁源代碼;運(yùn)用BeautifulSoup 的css 選擇器獲取推文標(biāo)題和推文簡介;用正則表達(dá)式獲得推文的圖片地址和網(wǎng)頁地址,但是正則表達(dá)式解析出的網(wǎng)頁地址并不能直接打開網(wǎng)頁,需要把網(wǎng)頁地址中的字符“amp;”替換成空格,才能是正確的網(wǎng)頁地址;查詢已經(jīng)在數(shù)據(jù)庫中的公眾號推文編號,給爬取的公眾號推文進(jìn)行編號,最后存入數(shù)據(jù)庫。

        微信公眾號推文爬蟲的核心程序如下:

        圖3 是一個(gè)網(wǎng)上推文,圖4 是開發(fā)的爬蟲爬取該推文放到公眾號的界面。

        圖3 網(wǎng)上推文

        圖4 公眾號上爬取的網(wǎng)上推文

        (二)開發(fā)新聞爬蟲

        今日頭條有豐富的實(shí)時(shí)新聞,新聞爬蟲可爬取今日頭條的熱點(diǎn)新聞。其工作原理是運(yùn)用抓包爬取模塊爬取今日頭條熱點(diǎn)的新聞數(shù)據(jù)傳輸包;應(yīng)用json 解析庫解析新聞數(shù)據(jù)包,獲取新聞的標(biāo)題、簡介、網(wǎng)頁部分地址、圖片地址;并將網(wǎng)頁部分網(wǎng)址生成完整的網(wǎng)頁網(wǎng)址;查詢已經(jīng)在數(shù)據(jù)庫中的新聞爬蟲編號,給現(xiàn)爬取的新聞進(jìn)行編號,最后存入數(shù)據(jù)庫。

        微信公眾號新聞爬蟲的核心程序如下:

        圖5 是今日頭條新聞,圖6 是開發(fā)的爬蟲爬取該新聞放到公眾號的界面。

        圖5 今日頭條新聞

        圖6 公眾號上爬取的新聞

        (三)開發(fā)段子爬蟲

        糗事百科的笑話中有非常豐富的搞笑素材,段子爬蟲可運(yùn)用源碼爬取糗事百科網(wǎng)頁中的段子笑話。通過分析發(fā)現(xiàn),糗事百科的笑話內(nèi)容被標(biāo)簽包裹,為避免使用css 選擇器時(shí)返回的數(shù)據(jù)格式不正確,用Python的分割函數(shù)split()將源代碼切割成n個(gè)分段,每個(gè)分段有一個(gè)笑話內(nèi)容。段子爬蟲通過BeautifulSoup的css選擇器提取每個(gè)分段中的段子信息,查詢已經(jīng)在數(shù)據(jù)庫中的段子爬蟲編號,給現(xiàn)爬取的段子進(jìn)行編號,最后存入數(shù)據(jù)庫。圖7是糗事百科的笑話,圖8是開發(fā)的段子爬取該段子放到公眾號的界面。

        圖7 糗事百科笑話

        圖8 公眾號上爬取的笑話

        微信公眾號段子爬蟲的核心程序如下:

        六、小結(jié)

        在當(dāng)代,微信用戶很多。為了更便捷的發(fā)布消息或者為了給企業(yè)做廣告,很多單位甚至個(gè)人注冊并使用公眾號,但是很多公眾號被受眾關(guān)注得不多,主要原因是這些公眾號難以提供有質(zhì)量的推文和服務(wù)。針對公眾號不能自動(dòng)推送消息,本文采用Python網(wǎng)絡(luò)爬蟲技術(shù)對公眾號進(jìn)行二次開發(fā),實(shí)現(xiàn)了對公眾號推文、網(wǎng)絡(luò)新聞、網(wǎng)絡(luò)笑話等信息的自動(dòng)推送,為校園文化建設(shè)提供了可行方案。

        猜你喜歡
        爬蟲段子開發(fā)者
        利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說
        基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
        嘻哈段子鋪
        嘻哈段子鋪
        嘻哈段子鋪
        利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
        電子測試(2018年1期)2018-04-18 11:53:04
        大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
        電子制作(2017年9期)2017-04-17 03:00:46
        段子來了
        16%游戲開發(fā)者看好VR
        CHIP新電腦(2016年3期)2016-03-10 13:06:42
        iOS開發(fā)者調(diào)查
        電腦迷(2015年8期)2015-05-30 12:27:10
        国产精品久久国产三级国不卡顿| 国产女人av一级一区二区三区| 少妇被黑人嗷嗷大叫视频| 99久久婷婷国产综合亚洲| 中文区中文字幕免费看| 亚洲av无码久久精品蜜桃| 中文人妻av久久人妻18| 国产精品高清视亚洲乱码有限公司 | 草莓视频成人| 国产成人户外露出视频在线| 成 人 网 站 在线 看 免费| 国产日本精品一区二区| 国语自产视频在线| 亚洲性啪啪无码av天堂| 国产短视频精品区第一页| 国产盗摄一区二区三区av| 亚洲国产精品18久久久久久| 国内精品久久久久久中文字幕 | 中文亚洲欧美日韩无线码| 国产真人无遮挡免费视频| 国产精品亚洲一区二区三区妖精| 91超精品碰国产在线观看| 一区二区三区在线 | 欧| 国产精品亚洲专区在线播放| 中文字幕有码手机视频| 麻豆国产精品va在线观看不卡| 天天干夜夜操| 自拍 另类 综合 欧美小说| 日韩激情av不卡在线| 后入内射国产一区二区| 依依成人精品视频在线观看 | 成人永久福利在线观看不卡| 亚洲一区二区自偷自拍另类| 看全色黄大色黄大片 视频| 熟女俱乐部五十路二区av| 青青草一级视频在线观看| 青青草亚洲视频社区在线播放观看 | 国产精品亚洲一区二区三区在线| 国产午夜成人av在线播放| 日韩亚洲欧美中文高清在线| 日韩精品高清不卡一区二区三区|