日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python2.7下同步华为云照片的爬虫程序实现

發(fā)布時(shí)間:2025/4/9 python 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python2.7下同步华为云照片的爬虫程序实现 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、背景

隨著華為手機(jī)的銷量加大,華為云的捆綁服務(wù)使用量也越來(lái)越廣泛,華為云支持自動(dòng)同步照片、通訊錄、記事本等,用著確實(shí)也挺方便的,云服務(wù)帶來(lái)方便的同時(shí),也帶來(lái)了數(shù)據(jù)管理風(fēng)險(xiǎn)。
華為目前只提供一個(gè)www.hicloud.com網(wǎng)站來(lái)管理數(shù)據(jù),不提供windows平臺(tái)的同步工具,數(shù)據(jù)管理和同步非常不方便。

2、功能描述

進(jìn)過(guò)幾天的摸索,目前的代碼實(shí)現(xiàn)以下功能:
1、自動(dòng)調(diào)用登錄網(wǎng)址,并顯示驗(yàn)證碼,等待手動(dòng)輸入驗(yàn)證碼;
2、驗(yàn)證碼或者密碼出錯(cuò),自動(dòng)重新調(diào)用登錄網(wǎng)址,最多3次出錯(cuò)機(jī)會(huì);
3、自動(dòng)進(jìn)入相冊(cè)文件夾,按照相冊(cè)列表獲取相片、視頻的真實(shí)地址;
4、方案1:把文件真實(shí)地址保存到文本文件中,然后手動(dòng)調(diào)用迅雷等工具進(jìn)行批量下載;
? ? 方案2:建立本地文件夾,單線程的逐個(gè)將服務(wù)器上的相片、視頻等文件自動(dòng)同步到本地。
? ? 方案3:優(yōu)化方案2,采取多線程的方式獲取文件。

3、代碼說(shuō)明

A、登錄過(guò)程

? ? 訪問(wèn)http://www.hicloud.com,系統(tǒng)會(huì)自動(dòng)執(zhí)行多步跳轉(zhuǎn)
? ? 1、先直接在頁(yè)面中refresh跳轉(zhuǎn)到http://www.hicloud.com/others/login.action
? ? 2、再直接redirect到https://hwid1.vmall.com/casserver/logout?service=https://www.hicloud.com:443/logout
? ? 3、再redirect到https://hwid1.vmall.com/casserver/remoteLogin?service=https://www.hicloud.com:443/others/login.action&loginChannel=1000002&reqClientType=1&loginUrl=https://hwid1.vmall.com/oauth2/account/login?reqClientType=1&lang=zh-cn&adUrl=https://www.hicloud.com:443/others/show_advert.action
? ? 4、再redirect到https://hwid1.vmall.com/oauth2/account/login?reqClientType=1&validated=true&service=https://www.hicloud.com:443/others/login.action&loginChannel=1000002&reqClientType=1&adUrl=https://www.hicloud.com:443/others/show_advert.action&lang=zh-cn
? ? 這個(gè)鏈接會(huì)刷新出來(lái)登錄界面,本程序直接使用鏈接4進(jìn)行登陸。
?(啃爹吧,搞這么多跳轉(zhuǎn),大概華為管理員以為這樣就可以防爬蟲?嗯,一開(kāi)始在firefox里抓報(bào)文,跳轉(zhuǎn)給報(bào)文跟蹤增加了很多難度,后來(lái)祭出Fiddler4,搞定!!!)。
? ? 5、在鏈接4中包含一個(gè)刷新驗(yàn)證碼的request:?
? ?https://hwid1.vmall.com/casserver/randomcode?randomCodeType=emui4_login&_t=1462786575782
? ?其中參數(shù)t是系統(tǒng)本地時(shí)間
? ? 6、接下來(lái)調(diào)用https://hwid1.vmall.com/casserver/remoteLogin進(jìn)行post提交
? ? 7、登錄成功后會(huì)再次執(zhí)行3次redirect,分別是:
? ? https://www.hicloud.com:443/others/login.action?lang=zh-cn&ticket=1ST-157502-OV1212126aV9BcM9Sh2Dpe-cas
? ? https://www.hicloud.com:443/others/login.action?lang=zh-cn
? ? https://www.hicloud.com:443/home
? ? 若是登錄失敗(下面是驗(yàn)證碼錯(cuò)誤時(shí)的跳轉(zhuǎn)鏈接),會(huì)redirect到鏈接4,因此本文直接使用鏈接4進(jìn)行登錄。
? ? https://hwid1.vmall.com/oauth2/account/login?validated=true&errorMessage=random_code_error|user_pwd_continue_error&service=https%3A%2F%2Fwww.hicloud.com%3A443%2Fothers%2Flogin.action%3Flang%3Dzh-cn&loginChannel=1000002&reqClientType=1&adUrl=https%3A%2F%2Fwww.hicloud.com%3A443%2Fothers%2Fshow_advert.action%3Flang%3Dzh-cn&lang=zh-cn&viewT

B、函數(shù)說(shuō)明

1、hw.enableCookies()
主要是設(shè)置全局的urllib2的一些屬性,譬如打開(kāi)調(diào)試開(kāi)關(guān),打開(kāi)cookie管理,注意全局二字,這是urllib2的特性;

2、hw.getLoginPage()
主要實(shí)現(xiàn)訪問(wèn)前文的鏈接4,并獲取應(yīng)答報(bào)文,注意應(yīng)答報(bào)文在后面將進(jìn)行處理。
可以得到密碼校驗(yàn)submit時(shí)需要的一些參數(shù)。

3、hw.getRadomCode()
調(diào)用服務(wù)器端驗(yàn)證碼算法生成驗(yàn)證碼圖片,并調(diào)用系統(tǒng)shell顯示圖片。
顯示圖片后,阻塞進(jìn)程,等待用戶手動(dòng)輸入驗(yàn)證碼(曾經(jīng)想過(guò)調(diào)用ocr包進(jìn)行字符識(shí)別,不過(guò)發(fā)現(xiàn)網(wǎng)上幾個(gè)公開(kāi)的包,在識(shí)別華為驗(yàn)證碼時(shí)都基本不好用,遂放棄)。

4、hw.genLoginData(content)
基于2、3的返回,拼裝驗(yàn)證密碼submit的post字符串

5、hw.checkUserPwd(postdata)
正式開(kāi)始調(diào)用驗(yàn)證密碼的鏈接進(jìn)行密碼校驗(yàn);
從校驗(yàn)成功的應(yīng)答報(bào)文中使用正則表達(dá)式獲取CSRFToken,這個(gè)值很關(guān)鍵,后續(xù)在很多地方用到;

6、hw.getAlbumPage() ?
直接訪問(wèn)華為云的照片主頁(yè)https://www.hicloud.com:443/album
其實(shí)正常情況下,登錄成功后,用戶需要點(diǎn)擊好幾個(gè)動(dòng)作才能打開(kāi)照片主頁(yè),后臺(tái)相當(dāng)于有多次交互。寫爬蟲的話,就略過(guò)這些無(wú)關(guān)緊要的訪問(wèn)了。

7、hw.getAlbumList()
相冊(cè)主頁(yè)有兩種展示方式:一種按時(shí)間分組,一種按相冊(cè)名分組,我們采取后一種方式。
所以先獲取相冊(cè)列表,注意這個(gè)交互,服務(wù)器端返回的是json應(yīng)答報(bào)文。

8、hw.getFileList(page,'albumList','albumId')
依據(jù)步驟7返回的json報(bào)文內(nèi)容,循環(huán)獲取各相冊(cè)里相冊(cè)文件的地址;
這個(gè)交互返回還是json報(bào)文,需要說(shuō)明是這個(gè)json報(bào)文還是gzip壓縮的,而且發(fā)現(xiàn)Fiddler4竟然支持自動(dòng)解壓。
(在測(cè)試的時(shí)候,通過(guò)Fiddler代理收到的應(yīng)答報(bào)文已經(jīng)被自動(dòng)解壓了,正式部署運(yùn)行時(shí)發(fā)現(xiàn)報(bào)錯(cuò)……不過(guò)在寫本文時(shí),又發(fā)現(xiàn)Fiddler是有開(kāi)關(guān)來(lái)控制是否自動(dòng)對(duì)gzip報(bào)文解壓,Fiddler很強(qiáng)大,挖個(gè)坑后面再寫Fiddler怎么用)

9、hw.getFileList(page,'ownShareList','shareId')
這個(gè)跟步驟8是一樣的功能,主要是華為云里頭比較搞,針對(duì)微信單獨(dú)設(shè)置了一個(gè)相冊(cè)目錄,其json節(jié)點(diǎn)是ownShareList,步驟8中是albumList。

8,9兩個(gè)函數(shù)中在下載文件時(shí)有三種方案,需要選擇那個(gè)方案對(duì)應(yīng)打開(kāi)對(duì)應(yīng)代碼注釋行:
#方案1:保存下載地址到文本文件中,但不下載文件
#icurrentnum += self.saveFileList2Txt(each[childkey],page,icurrentnum)
#方案2:單線程下載文件到本地
#icurrentnum += self.downFileList(each[childkey],page)
#方案3:多線程下載文件到本地
#unicode碼格式
#print each[childkey].encode('gbk')
icurrentnum += self.downFileListMultiThread(each[childkey],page)

程序說(shuō)明至此結(jié)束,具體大家看代碼吧,都不算復(fù)雜。
另外得說(shuō)明異常拋出這塊,我并沒(méi)有去充分考慮和完善,但可以確定代碼肯定是好用的。
以本人舉例,使用華為半年,在服務(wù)器上總共存了2536個(gè)文件,一共9.24G數(shù)據(jù)。在2016-5-14日晚,通過(guò)家里的20M聯(lián)通寬帶全部同步到本地,具體耗時(shí)有點(diǎn)忘了,不過(guò)程序運(yùn)行并沒(méi)有異常退出,不得不表?yè)P(yáng)python的穩(wěn)定性。
不過(guò)不保證華為官方看到這個(gè)之后,不去調(diào)整他的后臺(tái)邏輯,但是思路基本問(wèn)題不大。
目前來(lái)看在防爬蟲這塊,淘寶是做的相對(duì)較好了,主要是邏輯變化比較快,其次是復(fù)雜。

?

4、總結(jié)

a、學(xué)習(xí)python以及爬蟲時(shí)間都不長(zhǎng),斷斷續(xù)續(xù)加起來(lái)不到1個(gè)月的樣子,借鑒了很多網(wǎng)絡(luò)資料,有艱辛也有收獲。
b、python確實(shí)很強(qiáng)大,入門難度不高,網(wǎng)絡(luò)資料非常豐富,官方在官方類的管理上,做得相當(dāng)不錯(cuò),利用pip安裝挺簡(jiǎn)單也挺方便。
c、python的官方類都有是有源碼(目錄在c:\python27\lib下,c:\python是我的python安裝目錄),遇到把握不準(zhǔn)的問(wèn)題,其實(shí)看源碼是最好的辦法,網(wǎng)上的資料也有很多繆誤。
不需要完全看懂,一是學(xué)習(xí)本身需要過(guò)程,二是源碼太長(zhǎng),類太多。可以以點(diǎn)帶面,慢慢提高,而且看源碼還可以學(xué)習(xí)源碼中的一些寫法。
d、另外,不得不吐槽python的字符編碼處理這塊,坑太多了。
曾經(jīng)在encode,decode這塊困擾了近一個(gè)禮拜,到目前算是基本理解、會(huì)用吧。

?

5、源碼

synchuaweiphoto.py

1 # -*- coding=utf-8 -*- 2 __author__='zhongtang' 3 4 5 import urllib 6 import urllib2 7 import cookielib 8 import time,datetime 9 from PIL import Image 10 from lxml import etree 11 from ordereddict import OrderedDict 12 import re 13 import json 14 import htmltool 15 import os 16 import threading 17 import gzip 18 import StringIO 19 import requests 20 21 class HuaWei: 22 #華為云服務(wù)登錄 23 ''' 24 訪問(wèn)http://www.hicloud.com 執(zhí)行多步跳轉(zhuǎn) 25 1、先直接在頁(yè)面中refresh跳轉(zhuǎn)到http://www.hicloud.com/others/login.action 26 2、再直接redirect到https://hwid1.vmall.com/casserver/logout?service=https://www.hicloud.com:443/logout 27 3、再redirect到https://hwid1.vmall.com/casserver/remoteLogin?service=https://www.hicloud.com:443/others/login.action&loginChannel=1000002&reqClientType=1&loginUrl=https://hwid1.vmall.com/oauth2/account/login?reqClientType=1&lang=zh-cn&adUrl=https://www.hicloud.com:443/others/show_advert.action 28 4、再redirect到https://hwid1.vmall.com/oauth2/account/login?reqClientType=1&validated=true&service=https://www.hicloud.com:443/others/login.action&loginChannel=1000002&reqClientType=1&adUrl=https://www.hicloud.com:443/others/show_advert.action&lang=zh-cn 29 這個(gè)鏈接會(huì)刷新出來(lái)登錄界面,本程序直接使用鏈接4進(jìn)行登陸。 30 5、在鏈接4中包含一個(gè)刷新驗(yàn)證碼的request: https://hwid1.vmall.com/casserver/randomcode?randomCodeType=emui4_login&_t=1462786575782 31 6、接下來(lái)調(diào)用https://hwid1.vmall.com/casserver/remoteLogin進(jìn)行post提交 32 7、登錄成功后會(huì)再次執(zhí)行3次redirect,分別是: 33 https://www.hicloud.com:443/others/login.action?lang=zh-cn&ticket=1ST-157502-OVRaMo6aV232229Sh2Dpe-cas 34 https://www.hicloud.com:443/others/login.action?lang=zh-cn 35 https://www.hicloud.com:443/home 36 若是登錄失敗,會(huì)redirect到鏈接4,因此本文直接使用鏈接4進(jìn)行登錄。 37 https://hwid1.vmall.com/oauth2/account/login?validated=true&errorMessage=random_code_error|user_pwd_continue_error&service=https%3A%2F%2Fwww.hicloud.com%3A443%2Fothers%2Flogin.action%3Flang%3Dzh-cn&loginChannel=1000002&reqClientType=1&adUrl=https%3A%2F%2Fwww.hicloud.com%3A443%2Fothers%2Fshow_advert.action%3Flang%3Dzh-cn&lang=zh-cn&viewT 38 ''' 39 40 def __init__(self): 41 self.username='username@yeah.net' #用戶名 42 self.passwd='userpassword' #用戶密碼 43 self.authcode='' #驗(yàn)證碼 44 self.baseUrl='https://hwid1.vmall.com' 45 self.loginUrl=self.baseUrl+'/oauth2/account/login?reqClientType=1&validated=true&service=https://www.hicloud.com:443/others/login.action&loginChannel=1000002&reqClientType=1&adUrl=https://www.hicloud.com:443/others/show_advert.action&lang=zh-cn' 46 #self.loginUrl='https://www.hicloud.com' 47 self.randomUrl=self.baseUrl+'/casserver/randomcode' 48 self.checkpwdUrl=self.baseUrl+'/casserver/remoteLogin' 49 self.successUrl='https://www.hicloud.com:443/album' 50 self.getalbumsUrl= 'https://www.hicloud.com/album/getCloudAlbums.action' 51 self.getalbumfileUrl = 'https://www.hicloud.com/album/getCloudFiles.action' 52 self.loginHeaders = { 53 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0', 54 'Connection' : 'keep-alive' 55 } 56 self.CSRFToken='' 57 self.OnceMaxFile=100 #單次最大獲取文件數(shù)量 58 self.FileList={} #照片列表 59 self.ht=htmltool.htmltool() 60 self.curPath= self.ht.getPyFileDir() 61 self.FileNum=0 62 63 #設(shè)置urllib2 cookie 64 def enableCookies(self): 65 #建立一個(gè)cookies 容器 66 self.cookies = cookielib.CookieJar() 67 #將一個(gè)cookies容器和一個(gè)HTTP的cookie的處理器綁定 68 cookieHandler = urllib2.HTTPCookieProcessor(self.cookies) 69 #創(chuàng)建一個(gè)opener,設(shè)置一個(gè)handler用于處理http的url打開(kāi) 70 #self.opener = urllib2.build_opener(self.handler) 71 httpHandler=urllib2.HTTPHandler(debuglevel=1) 72 httpsHandler=urllib2.HTTPSHandler(debuglevel=1) 73 self.opener = urllib2.build_opener(cookieHandler,httpHandler,httpsHandler) 74 #安裝opener,此后調(diào)用urlopen()時(shí)會(huì)使用安裝過(guò)的opener對(duì)象 75 urllib2.install_opener(self.opener) 76 77 #獲取當(dāng)前時(shí)間 78 def getJstime(self): 79 itime= int(time.time() * 1000) 80 return str(itime) 81 82 #獲取驗(yàn)證碼 83 def getRadomCode(self,repeat=2): 84 ''' 85 -- js 86 function chgRandomCode(ImgObj, randomCodeImgSrc) { 87 ImgObj.src = randomCodeImgSrc+"?randomCodeType=emui4_login&_t=" + new Date().getTime(); 88 }; 89 -- http 90 GET /casserver/randomcode?randomCodeType=emui4_login&_t=1462786575782 HTTP/1.1 91 ''' 92 data ='' 93 ostime=self.getJstime() 94 filename=self.curPath+'\\'+ostime+'.png' 95 url= self.randomUrl+"?randomCodeType=emui4_login&_t="+ostime 96 #print url 97 try: 98 request = urllib2.Request(url,headers=self.loginHeaders) 99 response = urllib2.urlopen(request) 100 data = response.read() 101 except : 102 time.sleep(5) 103 print u'保存驗(yàn)證碼圖片[%s]出錯(cuò),嘗試:\n[%s]' %(url,2-repeat) 104 if repeat>0: 105 return self.getRadomCode(repeat-1) 106 if len(data)<= 0 : return 107 f = open(filename, 'wb') 108 f.write(data) 109 #print u"保存圖片:",fileName 110 f.close() 111 im = Image.open(filename) 112 im.show() 113 self.authcode='' 114 self.authcode = raw_input(u'請(qǐng)輸入4位驗(yàn)證碼:') 115 #刪除驗(yàn)證碼文件 116 os.remove(filename) 117 return 118 119 def genLoginData(self,content): 120 ''' 121 1<input type="hidden" id="form_submit" name="submit" value="true"> 122 2<input type="hidden" id="form_loginUrl" name="loginUrl" value="https://hwid1.vmall.com/oauth2/account/login" /> 123 3<input type="hidden" id="form_service" name="service" value="https://www.hicloud.com:443/others/login.action?lang=zh-cn" /> 124 4<input type="hidden" id="form_loginChannel" name="loginChannel" value="1000002" /> 125 5<input type="hidden" id="form_reqClientType" name="reqClientType" value="1" /> 126 6<input type="hidden" id="form_deviceID" name="deviceID" value="" /> 127 7<input type="hidden" id="form_adUrl" name="adUrl" value="https://www.hicloud.com:443/others/show_advert.action?lang=zh-cn" /> 128 8<input type="hidden" id="form_lang" name="lang" value="zh-cn" /> 129 9<input type="hidden" id="form_inviterUserID" name="inviterUserID" value="" /> 130 10<input type="hidden" id="form_inviter" name="inviter" value="" /> 131 11<input type="hidden" id="form_viewType" name="viewType" value="0" /> 132 12<input type="hidden" id="form_quickAuth" name="quickAuth" value="" /> 133 <input type="hidden" id="form_loginUrlForBind" value="https://hwid1.vmall.com/oauth2/portal/thirdAccountBindByPhoneForPCWeb.jsp?themeName=cloudTheme" /> 134 ''' 135 tree = etree.HTML(content) 136 form= tree.xpath('//div[@class="login-box"]')[0] 137 #print len(form) 138 params=OrderedDict() 139 params['submit']=form.xpath('//*[@name="submit"]/@value')[0] #1 140 params['loginUrl']= form.xpath('//*[@name="loginUrl"]/@value')[0] 141 params['service'] = form.xpath('//*[@name="service"]/@value')[0] 142 params['loginChannel']= form.xpath('//*[@name="loginChannel"]/@value')[0] 143 params['reqClientType'] = form.xpath('//*[@name="reqClientType"]/@value')[0] 144 params['deviceID']= form.xpath('//*[@name="deviceID"]/@value')[0]#6 145 params['adUrl']= form.xpath('//*[@name="adUrl"]/@value')[0] 146 params['lang'] = form.xpath('//*[@name="lang"]/@value')[0] 147 params['inviterUserID']= form.xpath('//*[@name="inviterUserID"]/@value')[0] 148 params['inviter'] = form.xpath('//*[@name="inviter"]/@value')[0] 149 params['viewType']= form.xpath('//*[@name="viewType"]/@value')[0]#11 150 params['quickAuth'] = form.xpath('//*[@name="quickAuth"]/@value')[0] 151 params['userAccount']= self.username 152 params['password'] = self.passwd 153 params['authcode'] = self.authcode 154 params=urllib.urlencode(params) 155 return params 156 157 def getLoginPage(self): 158 request = urllib2.Request(self.loginUrl,headers=self.loginHeaders) 159 response = urllib2.urlopen(request) 160 page ='' 161 page= response.read() 162 redUrl=response.geturl() 163 return page.decode('utf-8') 164 165 166 def checkUserPwd(self,postdata): 167 ''' 168 <input type="hidden" value="" id="userHeadPic"> 169 <input type="hidden" value="1" id="activeUserState"/> 170 <input type="hidden" value='[{"deviceType":0,"deviceID":"1231231231212312312312","terminalType":"huawei mt7-tl00","deviceAliasName":"HUAWEI MT7-TL00"}]' id="deviceList" /> 171 <input type="hidden" value='www.hicloud.com' id="server" /> 172 <input type="hidden" value='1' id="biFlag" /> 173 <input type="hidden" value='https://dc.hicloud.com' id="biUrl" /> 174 <script> 175 var CSRFToken = "9b64dcad38d269147f2c27dc12171e60aade2a22316de213"; 176 var accountType = "1"; 177 var accountTypeLh = "4"; 178 </script> 179 ''' 180 self.CSRFToken='' 181 pattern = re.compile('CSRFToken = "(.*?)"',re.S) 182 #保存CSRFToken 183 content = re.search(pattern,page) 184 if content : 185 self.CSRFToken = content.group(1) 186 return '1' 187 else: 188 return '0' 189 190 #打開(kāi)相冊(cè)頁(yè),獲取CSRFToken字符,這個(gè)是關(guān)鍵字,在后續(xù)報(bào)文都將用到。 191 def getAlbumPage(self): 192 request=urllib2.Request(self.successUrl,headers=self.loginHeaders) 193 response = urllib2.urlopen(request) 194 rheader = response.info() 195 page= response.read() 196 redUrl=response.geturl() 197 return self.getCSRFToken(page.decode('utf-8')) 198 199 200 201 """ 202 Description : 將網(wǎng)頁(yè)圖片保存本地 203 @param imgUrl : 待保存圖片URL 204 @param imgName : 待保存圖片名稱 205 @return 無(wú) 206 """ 207 def saveImage( self,imgUrl,imgName ="default.jpg" ): 208 #使用requests的get方法直接下載文件,注意因?yàn)閡rl是https,所以加了verify=False 209 response = requests.get(imgUrl, stream=True,verify=False) 210 image = response.content 211 filename= imgName 212 print("保存文件"+filename+"\n") 213 try: 214 with open(filename ,"wb") as jpg: 215 jpg.write( image) 216 return 217 except IOError: 218 print("IO Error\n") 219 return 220 finally: 221 jpg.close 222 223 """ 224 Description : 開(kāi)啟多線程執(zhí)行下載任務(wù),注意沒(méi)有限制線程數(shù) 225 @param filelist:待下載圖片URL列表 226 @return 無(wú) 227 """ 228 def downFileMultiThread( self,urllist,namelist ): 229 task_threads=[] #存儲(chǔ)線程 230 count=1 231 i = 0 232 for i in range(0,len(urllist)): 233 fileurl = urllist[i] 234 filename= namelist[i] 235 t = threading.Thread(target=self.saveImage,args=(fileurl,filename)) 236 count = count+1 237 task_threads.append(t) 238 for task in task_threads: 239 task.start() 240 for task in task_threads: 241 task.join() 242 243 #多線程下載相冊(cè)照片到目錄 ,不同相冊(cè)保存到不同的目錄 244 def downFileListMultiThread(self,dirname,hjsondata): 245 if len(hjsondata)<= 0 : return 0 246 hjson2 = {} 247 hjson2 = json.loads(hjsondata) 248 #新建目錄,并切換到目錄 249 self.ht.mkdir(dirname) 250 i = 0 251 urllist=[] 252 namelist=[] 253 if hjson2.has_key("fileList"): 254 for each in hjson2["fileList"]: 255 urllist.append(hjson2["fileList"][i]["fileUrl"].encode('gbk')) 256 namelist.append(hjson2["fileList"][i]["fileName"].encode('gbk')) 257 self.FileNum += 1 258 i += 1 259 #每25個(gè)文件開(kāi)始并發(fā)下載,并清空數(shù)組,或者最后一組 260 if i%25==0 or i == len(hjson2["fileList"]): 261 self.downFileMultiThread(urllist,namelist) 262 urllist=[] 263 namelist=[] 264 return i 265 266 #下載相冊(cè)照片到目錄 ,不同相冊(cè)保存到不同的目錄 267 def downFileList(self,dirname,hjsondata): 268 if len(hjsondata)<= 0 : return 269 hjson2 = {} 270 hjson2 = json.loads(hjsondata) 271 #新建目錄,并切換到目錄 272 self.ht.mkdir(dirname) 273 i = 0 274 if hjson2.has_key("fileList"): 275 for each in hjson2["fileList"]: 276 self.saveImage(hjson2["fileList"][i]["fileUrl"].encode('gbk'),hjson2["fileList"][i]["fileName"].encode('gbk')) 277 #每5個(gè)文件休息2秒 278 self.FileNum += 1 279 if i%5 ==0 : time.sleep(2) 280 i += 1 281 return i 282 283 284 #保存相冊(cè)照片地址到文件 ,不同相冊(cè)保存到不同的文件 285 def saveFileList2Txt(self,filename,hjsondata,flag): 286 if len(hjsondata)<= 0 : return 287 hjson2 = {} 288 hjson2 = json.loads(hjsondata) 289 lfilename = filename+u".txt" 290 if flag == 0 : #新建文件 291 print u'創(chuàng)建相冊(cè)文件'+lfilename+"\n" 292 #新建文件,代表新的相冊(cè)重新開(kāi)始計(jì)數(shù) 293 self.FileNum = 0 294 f = open(lfilename, 'wb') 295 else: #追加文件 296 f = open(lfilename, 'a') 297 i = 0 298 if hjson2.has_key("fileList"): 299 for each in hjson2["fileList"]: 300 f.write(hjson2["fileList"][i]["fileUrl"].encode('gbk')+"\n") 301 #每一千行分頁(yè) 302 self.FileNum += 1 303 if self.FileNum%1000 ==0 :f.write('\n\n\n\n\n\n--------------------page %s ------------------\n\n\n\n\n\n' %(int(self.FileNum/1000))) 304 i += 1 305 f.close() 306 return i 307 308 #循環(huán)讀取相冊(cè)文件 309 def getFileList(self,hjsondata,parentkey,childkey): 310 #step 3 getCoverFiles.action,循環(huán)取相冊(cè)文件列表,單次最多取100條記錄。 311 #每次count都是最大數(shù)量49,不管實(shí)際數(shù)量是否夠,每次currentnum遞增,直到返回空列表。 312 #最后一次返回 空列表 313 #{"albumSortFlag":true,"code":0,"info":"success!","fileList":[]} 314 #第一次取文件時(shí),例如文件總數(shù)量只有2個(gè),count也是放最大值49。 315 #albumIds[]=default-album-102-221216000029851117&ownerId=220012300029851117&height=300&width=300&count=49&currentNum=0&thumbType=imgcropa&fileType=0 316 #[{u'photoNum': 2518, u'albumName': u'default-album-1', u'iversion': -1, u'albumId': u'default-album-1', u'flversion': -1, u'createTime': 1448065264550L, u'size': 0}, 317 #{u'photoNum': 100, u'albumName': u'default-album-2', u'iversion': -1, u'albumId': u'default-album-2', u'flversion': -1, u'createTime': 1453090781646L, u'size': 0}] 318 hsjon={} 319 hjson = json.loads(hjsondata.decode('utf-8')) 320 paraAlbum=OrderedDict() 321 if hjson.has_key(parentkey): 322 for each in hjson[parentkey]: 323 paraAlbum={} 324 paraAlbum['albumIds[]'] = each[childkey] 325 paraAlbum['ownerId'] = hjson['ownerId'] 326 paraAlbum['height'] = '300' 327 paraAlbum['width'] = '300' 328 paraAlbum['count'] = self.OnceMaxFile 329 paraAlbum['thumbType'] = 'imgcropa' 330 paraAlbum['fileType'] = '0' 331 itotal= each['photoNum'] 332 icurrentnum=0 333 while icurrentnum<itotal: 334 paraAlbum['currentNum'] = icurrentnum 335 paraAlbumstr = urllib.urlencode(paraAlbum) 336 request=urllib2.Request(self.getalbumfileUrl,headers=self.loginHeaders,data=paraAlbumstr) 337 response = urllib2.urlopen(request) 338 rheader = response.info() 339 page = response.read() 340 #調(diào)用gzip進(jìn)行解壓 341 if rheader.get('Content-Encoding')=='gzip': 342 data = StringIO.StringIO(page) 343 gz = gzip.GzipFile(fileobj=data) 344 page = gz.read() 345 gz.close() 346 page= page.decode('utf-8') 347 #print page.decode('utf-8') 348 #方案1:保存下載地址到文本文件中,但不下載文件 349 #icurrentnum += self.saveFileList2Txt(each[childkey],page,icurrentnum) 350 #方案2:?單線程下載文件到本地 351 #icurrentnum += self.downFileList(each[childkey],page) 352 #方案3:?多線程下載文件到本地 353 #unicode碼格式 354 #print each[childkey].encode('gbk') 355 icurrentnum += self.downFileListMultiThread(each[childkey],page) 356 return 357 358 #step 1 getCloudAlbums,取相冊(cè)列表 359 def getAlbumList(self): 360 self.loginHeaders={ 361 'Host': 'www.hicloud.com', 362 'Connection': 'keep-alive', 363 'Accept': 'application/json, text/javascript, */*; q=0.01', 364 'Origin': 'https://www.hicloud.com', 365 'X-Requested-With': 'XMLHttpRequest', 366 'CSRFToken': self.CSRFToken, 367 'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.0 Chrome/30.0.1599.101 Safari/537.36', 368 'DNT': '1', 369 'Referer': 'https://www.hicloud.com/album', 370 'Accept-Encoding': 'gzip,deflate', 371 'Accept-Language': 'zh-CN', 372 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' 373 } 374 request=urllib2.Request(self.getalbumsUrl,headers=self.loginHeaders) 375 response = urllib2.urlopen(request) 376 page='' 377 page= response.read() 378 '''#返回報(bào)文 379 {"ownerId":"220012300029851117","code":0, 380 "albumList":[{"albumId":"default-album-1","albumName":"default-album-1","createTime":1448065264550,"photoNum":2521,"flversion":-1,"iversion":-1,"size":0}, 381 {"albumId":"default-album-2","albumName":"default-album-2","createTime":1453090781646,"photoNum":101,"flversion":-1,"iversion":-1,"size":0}], 382 "ownShareList":[{"ownerId":"220012300029851117","resource":"album","shareId":"default-album-102-220123000029851117","shareName":"微信","photoNum":2,"flversion":-1,"iversion":-1,"createTime":1448070407055,"source":"HUAWEI MT7-TL00","size":0,"ownerAcc":"jdstkxx@yeah.net","receiverList":[]}], 383 "recShareList":[]}' 384 ''' 385 if len(page)<=0 : 386 print u'取相冊(cè)列表出錯(cuò),無(wú)返回報(bào)文!!!\n\n%s\n\n',page.decode('utf-8') 387 return page 388 389 #主程序開(kāi)始 390 hw=HuaWei() 391 hw.enableCookies() 392 count =0 393 while (count <3): 394 count += 1 395 content= hw.getLoginPage() 396 if content == '' : 397 print '獲取登錄信息出錯(cuò),立即退出!!!\n\n[%s]\n\n' %(content) 398 break 399 #獲取驗(yàn)證碼 400 hw.getRadomCode() 401 #生成checkuserpwd提交時(shí)需要的POST data 402 postdata=hw.genLoginData(content) 403 #print postdata 404 reUrl = hw.checkUserPwd(postdata) 405 if reUrl.find("user_pwd_error") <> -1 : 406 print u'用戶名或用戶密碼錯(cuò)誤,立即退出!!!\n\n[%s]\n\n' %(reUrl) 407 break 408 elif reUrl.find("random_code_error") <> -1 : 409 print u'驗(yàn)證碼錯(cuò)誤,重試!!!\n\n[%s]\n\n' %(reUrl) 410 continue 411 else: 412 print '恭喜恭喜,登錄華為云成功!!!\n\n' 413 iRet = hw.getAlbumPage() 414 if iRet == 0 : 415 print '打開(kāi)相冊(cè)頁(yè)失敗,未獲取到CSRFToken!!!\n\n' 416 break 417 print '打開(kāi)相冊(cè)主頁(yè)成功,獲取到CSRFToken!!!\n\n' 418 page = hw.getAlbumList() 419 if page=='' : 420 print '獲取到相冊(cè)列表失敗!!!\n\n' 421 break 422 #保存相冊(cè)列表 423 hw.getFileList(page,'albumList','albumId') 424 #保存公共相冊(cè)列表 425 hw.getFileList(page,'ownShareList','shareId') 426 print '運(yùn)行結(jié)束,可以用迅雷打開(kāi)相冊(cè)文件進(jìn)行批量下載到本地!!!\n\n' 427 break

?

htmltool.py

1 # -*- coding:utf-8 -*- 2 __author__ = 'zhongtang' 3 4 import re 5 import HTMLParser 6 import cgi 7 import sys 8 import os 9 10 #處理頁(yè)面標(biāo)簽類 11 class htmltool: 12 #去除img標(biāo)簽,1-7位空格,&nbsp; 13 removeImg = re.compile('<img.*?>| {1,7}|&nbsp;') 14 #刪除超鏈接標(biāo)簽 15 removeAddr = re.compile('<a.*?>|</a>') 16 #把換行的標(biāo)簽換為\n 17 replaceLine = re.compile('<tr>|<div>|</div>|</p>') 18 #將表格制表<td>替換為\t 19 replaceTD= re.compile('<td>') 20 #將換行符或雙換行符替換為\n 21 replaceBR = re.compile('<br><br>|<br>') 22 #將其余標(biāo)簽剔除 23 removeExtraTag = re.compile('<.*?>') 24 #將多行空行刪除 25 removeNoneLine = re.compile('\n+') 26 27 #html 轉(zhuǎn)換成txt 28 #譬如 '&lt;abc&gt;' --> '<abc>' 29 def html2txt(self,html): 30 html_parser = HTMLParser.HTMLParser() 31 txt = html_parser.unescape(html) 32 return txt.strip() 33 34 #html 轉(zhuǎn)換成txt 35 #譬如 '<abc>' --> '&lt;abc&gt;' 36 def txt2html(self,txt): 37 html = cgi.escape(txt) 38 return html.strip() 39 40 def replace(self,x): 41 x = re.sub(self.removeImg,"",x) 42 x = re.sub(self.removeAddr,"",x) 43 x = re.sub(self.replaceLine,"\n",x) 44 x = re.sub(self.replaceTD,"\t",x) 45 x = re.sub(self.replaceBR,"\n",x) 46 x = re.sub(self.removeExtraTag,"",x) 47 x = re.sub(self.removeNoneLine,"\n",x) 48 #strip()將前后多余內(nèi)容刪除 49 return x.strip() 50 51 #獲取腳本文件的當(dāng)前路徑,返回utf-8格式 52 def getPyFileDir(self): 53 #獲取腳本路徑 54 path = sys.path[0] 55 #判斷為腳本文件還是py2exe編譯后的文件,如果是腳本文件,則返回的是腳本的目錄,如果是py2exe編譯后的文件,則返回的是編譯后的文件路徑 56 if os.path.isdir(path): 57 return path.decode('utf-8') 58 elif os.path.isfile(path): 59 return os.path.dirname(path).decode('utf-8') 60 61 #創(chuàng)建新目錄 62 def mkdir(self,path): 63 path = path.strip() 64 pathDir = self.getPyFileDir() 65 #print path 66 #print pathDir 67 #unicode格式 68 path = u'%s\\%s' %(pathDir,path) 69 # 判斷路徑是否存在 70 # 存在 True 71 # 不存在 False 72 isExists=os.path.exists(path) 73 # 判斷結(jié)果 74 if not isExists: 75 # 如果不存在則創(chuàng)建目錄 76 #print u'新建[%s]的文件夾\n' %(path) 77 # 創(chuàng)建目錄操作函數(shù) 78 os.makedirs(path) 79 #else: 80 # 如果目錄存在則不創(chuàng)建,并提示目錄已存在 81 #print u'文件夾[%s]已存在\n' %(path) 82 os.chdir(path) 83 return path

?

轉(zhuǎn)載于:https://www.cnblogs.com/zhongtang/p/5495161.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的python2.7下同步华为云照片的爬虫程序实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

五月婷婷综合网 | 国产高清在线永久 | 精品产品国产在线不卡 | 在线观看色视频 | 久久电影国产免费久久电影 | 97在线观看免费观看高清 | 少妇性aaaaaaaaa视频 | a国产精品 | 天天综合网入口 | 毛片精品免费在线观看 | 韩国av永久免费 | 色夜视频 | 天天激情天天干 | 欧美人交a欧美精品 | 国产精品99爱 | 久草视频免费 | 久久国产品 | 极品久久久久 | 美女黄视频免费 | av不卡免费看 | 一级黄色电影网站 | 亚洲综合在线一区二区三区 | 综合影视| 91福利视频免费观看 | 午夜精品久久久久久久久久久久 | 亚洲欧美在线视频免费 | 久久精品综合视频 | 亚洲综合视频在线观看 | 国产在线视频资源 | 四虎影视精品永久在线观看 | 九九九九免费视频 | 麻豆国产精品永久免费视频 | 国产中文字幕视频在线 | 久久久人人人 | 午夜91在线 | 9ⅰ精品久久久久久久久中文字幕 | 在线观看播放av | 麻豆影视网站 | 日韩免费观看一区二区三区 | 美女视频a美女大全免费下载蜜臀 | 国产免费av一区二区三区 | 亚洲精品色婷婷 | 欧美日韩久久 | 日韩欧美在线免费观看 | 一本之道乱码区 | 91传媒91久久久 | 国产无遮挡又黄又爽在线观看 | 精品产品国产在线不卡 | 99精品久久只有精品 | 亚洲精品乱码久久久久久9色 | 日韩av免费一区 | 天天色播 | 日韩精品久久久久 | 久久久久国产精品免费网站 | 97av视频| 91精品国自产在线偷拍蜜桃 | 免费看亚洲毛片 | 日韩精品三区四区 | 91网页版免费观看 | 九九在线视频免费观看 | 狠狠88综合久久久久综合网 | 久久精品一区二区 | 黄色高清视频在线观看 | 99久久er热在这里只有精品15 | 最新中文字幕在线播放 | 欧美精品乱码99久久影院 | 国内精品久久久 | www.狠狠色 | 免费看国产精品 | 久久99亚洲精品久久 | 亚洲 欧美 国产 va在线影院 | 中文字幕在线观看完整版电影 | 丁香婷婷亚洲 | 久久国产免 | 国产剧情一区二区 | 在线免费视频a | 国产精品久久久久久av | 欧美精品久久久 | 6080yy午夜一二三区久久 | 久久久久久蜜av免费网站 | 婷婷国产v亚洲v欧美久久 | 伊人中文在线 | 九九热中文字幕 | 亚洲精品久久激情国产片 | 中文字幕在线观看免费观看 | 亚洲日本欧美在线 | 成人免费看片网址 | 欧美精品久久天天躁 | 久久曰视频 | 免费久久精品视频 | 欧美日韩国产色综合一二三四 | 日韩专区av | 免费黄在线观看 | 亚洲综合导航 | 91专区在线观看 | 欧美极度另类性三渗透 | 久久久麻豆 | 天天干天天拍天天操天天拍 | 狠狠综合久久av | 在线亚洲成人 | 在线免费观看视频你懂的 | 综合色亚洲 | 中文字幕在线视频免费播放 | 91精品国自产在线偷拍蜜桃 | 深夜激情影院 | 国产精品中文字幕在线播放 | av在线h| 又污又黄的网站 | 鲁一鲁影院 | 亚洲理论影院 | 久久久久久麻豆 | 九九久久久久久久久激情 | 国产欧美综合在线观看 | 欧美激情精品久久久久久变态 | 日本一区二区三区视频在线播放 | 亚洲婷婷免费 | 国产一区二区不卡视频 | 丁香av在线 | 久久久亚洲国产精品麻豆综合天堂 | 国产精品自产拍在线观看网站 | 亚洲精品久久久久中文字幕二区 | 欧洲精品在线视频 | 中文字幕一区二区在线观看 | 亚洲欧美视频在线播放 | 欧美一区二区三区在线播放 | 天天操网 | 日韩av免费一区二区 | 玖玖爱在线观看 | 嫩草91影院 | 91精品国产乱码在线观看 | 亚洲欧美视屏 | 欧美乱码精品一区二区 | 日本黄色免费播放 | 中文字幕在线一区二区三区 | 91色偷偷 | 在线一二区| 午夜视频欧美 | 日韩网站免费观看 | 欧美乱大交 | 91麻豆精品国产91久久久无限制版 | 韩日av在线 | 亚洲精品 在线视频 | 91精品色| 91九色在线观看 | 国产成人在线免费观看 | 激情五月在线视频 | 国产伦精品一区二区三区在线 | 久久久久国产精品免费 | 欧美三级高清 | www免费视频com━ | 日韩三级视频在线看 | 国产在线观看污片 | 精品亚洲一区二区三区 | 国产中文字幕视频在线 | 丁香免费视频 | 国产不卡av在线 | 久久久综合 | 五月天高清欧美mv | 日日麻批40分钟视频免费观看 | 特级西西444www大胆高清无视频 | 国产一级片免费观看 | 亚洲精品一区中文字幕乱码 | 国产一级高清 | 国产91欧美 | 国产无吗一区二区三区在线欢 | 91大神在线观看视频 | 国产中文字幕在线视频 | av福利在线播放 | 国产精品成人在线观看 | 亚洲视频aaa | 亚洲首页| 日本精品一区二区 | 国产一区二区三区四区在线 | 日韩在线电影一区 | 西西44人体做爰大胆视频 | 国产成人av电影在线观看 | 亚洲资源片| 日韩| 97超碰精品 | 天天操夜夜操国产精品 | 中文网丁香综合网 | 又爽又黄在线观看 | 九九热精| 国产精品美女网站 | 黄网站app在线观看免费视频 | 亚洲理论片 | 久久久久中文字幕 | 国产经典 欧美精品 | 福利电影一区二区 | 免费看片成人 | 日本精品久久久久中文字幕 | 超碰97成人 | 国产在线97 | 日韩中文字幕视频在线观看 | 午夜精品一区二区三区在线播放 | 亚洲国内精品视频 | 亚洲综合在线播放 | 一区二区视频电影在线观看 | 亚洲天堂自拍视频 | 亚洲综合色视频在线观看 | 久久免费看毛片 | 日韩欧在线 | 九色视频网址 | 在线观看日韩视频 | 在线v片| 久久国产亚洲 | 日本狠狠色 | 国产综合福利在线 | 狠狠色丁香婷婷综合基地 | 国产免费国产 | 亚洲综合在线一区二区三区 | 成人免费一区二区三区在线观看 | 亚洲综合精品视频 | 美女视频免费精品 | 伊人国产女 | 麻豆视频在线观看免费 | 国产91勾搭技师精品 | 在线免费观看黄色av | 天天射天天搞 | 91久色蝌蚪 | 最新真实国产在线视频 | 久久99热精品 | 国产精品欧美一区二区三区不卡 | 成年人国产视频 | 看v片 | 国产成人久久 | 久久久国产一区二区三区 | 久久精品免费播放 | 女人18精品一区二区三区 | 国产福利av在线 | 少妇高潮流白浆在线观看 | 午夜黄色大片 | 中文字幕亚洲情99在线 | www.在线观看视频 | 亚洲国产高清视频 | 欧美一级黄大片 | www.伊人色.com| 99在线免费观看 | 欧美在线视频日韩 | 91精品国产福利在线观看 | 91精品国产综合久久久久久久 | 免费看污污视频的网站 | 欧美日韩伦理在线 | 免费色视频在线 | 天天操夜夜逼 | 成人一级免费视频 | 久久久国产精品亚洲一区 | 美腿丝袜av| 天天噜天天色 | 成人免费ⅴa | 97av在线视频免费播放 | 色婷婷丁香 | 麻豆视频在线免费 | 麻豆va一区二区三区久久浪 | 国产成人免费在线观看 | 久久国产系列 | 亚洲日本精品视频 | 女人18精品一区二区三区 | 九热在线 | 日韩精品在线免费观看 | 亚洲精品国产综合99久久夜夜嗨 | 91女子私密保健养生少妇 | 国产成人精品免高潮在线观看 | 人人舔人人爽 | 亚洲精品一区二区三区在线观看 | 成人丝袜 | 天天干夜夜 | 国产麻豆果冻传媒在线观看 | 国产日产精品一区二区三区四区 | 国产精品不卡在线 | 亚洲精品国产电影 | 在线播放 日韩专区 | 国产日韩精品一区二区在线观看播放 | 天天插天天色 | 国产伦理一区二区 | 人人草在线视频 | 久草视频在线新免费 | 久久国产精品偷 | 国产精品h在线观看 | 成人av免费在线 | 在线成人免费电影 | 国产成人一区二区啪在线观看 | 日韩欧美在线中文字幕 | 国内成人综合 | 中文字幕亚洲欧美日韩 | 国产一二三四在线视频 | 欧美久久精品 | 成年人视频免费在线播放 | 丝袜制服天堂 | 黄色毛片在线看 | 精品uu| 国产97色在线 | 成人性生交大片免费看中文网站 | 又湿又紧又大又爽a视频国产 | 亚洲天堂精品 | 男女视频久久久 | 欧美一级久久久久 | 丁香六月中文字幕 | 日韩视频www| www.久久视频 | 九九九热精品 | 天天激情天天干 | 99免费在线视频观看 | 狠狠色狠狠综合久久 | 日韩欧美xx | 一区二区三区免费在线观看视频 | 开心激情网五月天 | 色综合久久久久综合体桃花网 | 天天玩天天干天天操 | 国产精品久久久久永久免费 | 久久草精品 | 国产福利一区在线观看 | 亚洲欧美日本一区二区三区 | 99人久久精品视频最新地址 | 成人国产一区二区 | 91九色视频在线播放 | 亚洲九九影院 | 在线视频观看国产 | 在线免费观看视频a | 91精品视频免费观看 | 高潮毛片无遮挡高清免费 | 亚洲国产高清视频 | 夜色.com | 久久精品一级片 | 日韩成人免费在线电影 | 久久综合狠狠综合久久狠狠色综合 | 日日夜夜精品免费 | 五月婷婷亚洲 | 日韩免费二区 | 又黄又爽又色无遮挡免费 | 在线观看国产高清视频 | 亚洲另类xxxx | 欧亚日韩精品一区二区在线 | 日韩电影在线观看中文字幕 | 91av在线看 | 亚洲免费高清视频 | 国产日韩视频在线播放 | 日韩成人在线免费观看 | 色爱成人网 | 草久久久久 | 黄色com| 国产一级性生活 | 成人91免费视频 | 亚洲区视频在线 | 久久精品视频免费观看 | 婷婷国产精品 | 激情网五月婷婷 | 久久免费视频在线观看6 | 久久久久亚洲国产精品 | 国产亚洲婷婷免费 | 亚洲综合日韩在线 | 天天干天天操天天爱 | 国产精品女主播一区二区三区 | 免费在线播放 | 国产精品日韩在线观看 | 96久久欧美麻豆网站 | 国产一区免费在线观看 | 欧美一区二视频在线免费观看 | 久久久久久久久久久久久9999 | 午夜91在线 | 一级黄色片毛片 | 91在线入口 | 日本亚洲国产 | 日韩av五月天 | 亚洲三级在线播放 | 91精选在线 | 色爱区综合激月婷婷 | 人人澡人人模 | 狠狠躁夜夜躁人人爽超碰91 | 国产va在线| 国产视频2 | 日韩精品短视频 | 久久久精品网 | 久草网视频在线观看 | 最新成人在线 | 91最新在线观看 | 国产视频久久久久 | 91av中文 | 亚洲专区免费观看 | 18pao国产成视频永久免费 | 中国一级片视频 | www色片| 免费观看mv大片高清 | 中文字幕日韩国产 | 在线观看av黄色 | 精品国内自产拍在线观看视频 | 婷婷色六月天 | 深夜免费网站 | 五月婷在线视频 | 99久久激情 | 国产日韩视频在线 | 久久国产精品一二三区 | 在线观看视频一区二区三区 | 欧美乱淫视频 | 久久国产精品系列 | 免费久久久久久久 | 丁香花中文字幕 | 91爱在线 | 伊香蕉大综综综合久久啪 | 免费欧美高清视频 | 亚州av免费 | 国产视频精品免费 | 久久久久久久久久亚洲精品 | 精品极品在线 | 久久成人国产精品免费软件 | 久久久久国产免费免费 | 国产精品入口传媒 | 国产中文字幕在线观看 | 久久人人爽人人爽人人片av软件 | 欧美成年网站 | 人人添人人 | 久久久久久久国产精品 | 亚洲一区二区三区在线看 | 日韩高清www| 日韩在线视频看看 | 91人人视频在线观看 | 国产视频1 | 国产精品久久久一区二区 | 中文字幕国产精品一区二区 | 国产一二三区av | av电影在线免费观看 | 国产精品久久久久永久免费 | 99久久99热这里只有精品 | 日韩在线不卡 | 国产破处精品 | 六月丁香婷婷网 | 天天操综合网站 | 在线色视频小说 | 国产精品久久久久久久久久免费 | 伊人五月| 日韩欧美国产激情在线播放 | 天天操天天爱天天干 | 日韩av中文在线观看 | 国产精品久久久久久久久久尿 | av三级av| 激情婷婷丁香 | 欧美精品久久久久久久久免 | 日韩免费在线看 | 成人黄色片免费看 | 国产高清成人在线 | 久综合网| 亚洲日本在线视频观看 | 色久综合 | 99热这里是精品 | 日韩在线观看三区 | 一级久久精品 | 国产精品日韩在线 | 婷婷在线视频 | 国产精品美 | 久草热久草视频 | 色综合天天狠天天透天天伊人 | 右手影院亚洲欧美 | 日韩欧美在线高清 | 久久久婷| 人人爽人人澡人人添人人人人 | 欧美成人h版电影 | 国产精品视频免费观看 | 国产一区二区三区午夜 | 五月天婷亚洲天综合网精品偷 | 韩国精品在线观看 | 久久国产免费 | 99色资源 | 美女视频永久黄网站免费观看国产 | 亚洲欧洲中文日韩久久av乱码 | 免费看黄色毛片 | 天天综合操 | 天天爱天天干天天爽 | 99精品在线观看视频 | 中文字幕一区在线 | 国产一区二区三精品久久久无广告 | 粉嫩av一区二区三区四区在线观看 | 91精品国产自产老师啪 | 欧美黄色免费 | 国产一区在线视频 | 亚洲v精品 | 狠狠色丁香九九婷婷综合五月 | 欧美另类交在线观看 | 久久国际影院 | 手机av电影在线观看 | 视频福利在线 | 国产不卡免费av | 国产精彩视频一区二区 | 91精品在线视频观看 | 中文在线字幕免费观看 | 免费福利小视频 | 一区二区三区高清不卡 | 色偷偷88欧美精品久久久 | 91av美女| 国产免费久久精品 | 日本三级香港三级人妇99 | 亚洲人人网| 久久久18 | 成人9ⅰ免费影视网站 | 免费麻豆网站 | 中文字幕网站 | 欧美日韩一区二区三区不卡 | 国产中文字幕视频在线观看 | 91视频在线观看下载 | 欧美精品在线一区二区 | 久草在线91 | 亚洲精品网站在线 | 国产中文在线视频 | 热久精品 | 久久国产日韩 | 一区二区三区观看 | 国产精品免费看 | 精品美女在线视频 | 亚洲精品久久久久久久蜜桃 | 欧美日韩国产在线观看 | 操操综合 | 999久久久免费精品国产 | 久草手机视频 | 一区二区三区日韩精品 | 精品国产乱码久久久久久三级人 | 毛片视频电影 | 久久久免费网站 | 欧美成人理伦片 | 日韩欧美在线免费观看 | 最新99热| 成人小视频在线免费观看 | 99这里只有 | 国产正在播放 | 国产伦精品一区二区三区免费 | 欧美精品一区二区免费 | www在线观看视频 | 日日婷婷夜日日天干 | 狠狠躁日日躁狂躁夜夜躁 | 天天爽夜夜爽人人爽曰av | 五月色丁香 | 国产精品久久久久久久久久久杏吧 | 特级黄录像视频 | 91精品区 | 国产日本在线播放 | 在线观看的黄色 | 精品国产免费久久 | 日本xxxxav | 国产精品丝袜在线 | 天堂av在线网站 | 日本在线中文在线 | 亚洲一区二区三区四区精品 | 免费看片在线观看 | 国产精品18久久久久vr手机版特色 | 久久久精品久久 | 97超碰国产精品 | 国产色婷婷精品综合在线手机播放 | 中文字幕亚洲精品在线观看 | 欧美日韩aa | 国产精品免费看久久久8精臀av | 久久久久人人 | 天天干天天爽 | 999国产精品视频 | 美女黄久久 | 91精品国产欧美一区二区成人 | 天天弄天天干 | 午夜黄色 | 国产在线播放一区二区三区 | 国产中文字幕av | 日韩激情一二三区 | 久久综合成人网 | 国产精品黄网站在线观看 | 91大神精品视频在线观看 | 中文在线中文a | 久久久免费毛片 | 狠狠干夜夜爱 | v片在线看| 久久亚洲日本 | 一区二区三区四区免费视频 | 天天拍天天爽 | 国产在线国偷精品产拍 | av丝袜在线 | 九九久久精品 | 久久久999精品视频 国产美女免费观看 | 丁香婷婷自拍 | 欧美久久久久久久久久久 | 欧美国产精品久久久久久免费 | 狠狠色噜噜狠狠狠狠2022 | 亚洲精品视频久久 | 五月开心综合 | 一本到在线 | 日韩欧美高清免费 | 亚洲综合欧美日韩狠狠色 | 激情动态 | 国产精品久久99综合免费观看尤物 | 五月婷婷丁香六月 | 97在线观| 毛片基地黄久久久久久天堂 | 欧美成人理伦片 | 国产黄影院色大全免费 | 一区国产精品 | 日本精a在线观看 | 亚洲精品mv在线观看 | 国产成人av在线 | 99电影| 91你懂的 | 亚洲国产精品99久久久久久久久 | 国产视频亚洲精品 | 国产精品久久久久久一二三四五 | 黄色免费网 | 六月丁香婷 | 久久久亚洲麻豆日韩精品一区三区 | av东方在线 | 亚洲精品视频播放 | 91精品秘密在线观看 | 成人小电影在线看 | 在线观看成人毛片 | 久久免费公开视频 | 欧美日韩三级 | 99久久99视频只有精品 | 伊人色综合网 | 久草网站 | 久久久国产精品一区二区中文 | 中文字幕av最新 | 在线视频福利 | 毛片网站免费在线观看 | 日韩高清一区在线 | 免费福利在线观看 | 午夜精选视频 | 婷婷五月在线视频 | 天天搞天天干天天色 | 8x成人免费视频 | 综合网在线视频 | 丁香影院在线 | 美女搞黄国产视频网站 | 美女视频黄色免费 | 97国产精品视频 | 国产黄色在线观看 | 狠狠操电影网 | 亚洲一二三区精品 | 中文字幕免费观看全部电影 | 2018亚洲男人天堂 | 丁香久久综合 | 久久久久视 | 国产在线观看高清视频 | 免费av一级电影 | 操操操av | 欧美一级欧美一级 | 久久99视频 | 色综合 久久精品 | 一区二区三区高清在线观看 | 最新中文在线视频 | 在线视频 成人 | 欧美成人精品三级在线观看播放 | 在线视频日韩精品 | av网站免费线看精品 | 97成人精品| 中文字幕成人一区 | 色姑娘综合 | 欧美久久久久久久久 | 亚洲伊人网在线观看 | 色在线免费 | 国产一区二区在线播放 | 婷婷在线免费视频 | 三级黄色免费 | 在线观看免费成人av | 亚洲专区免费观看 | 久久久影片| 狠狠色丁香久久婷婷综合丁香 | 人人天天夜夜 | 一级c片| 国产精品美女久久久久aⅴ 干干夜夜 | 片网站| 97在线成人| 国产在线v | 国产精品国产三级国产aⅴ9色 | 免费能看的av | 久久久久国产一区二区 | 毛片一二区 | 天天se天天cao天天干 | 超碰在线中文字幕 | 午夜精品福利一区二区三区蜜桃 | 又黄又刺激 | www.com久久| 国产69精品久久久久9999apgf | 日韩在线欧美在线 | 国产亚洲免费观看 | 国产69精品久久99的直播节目 | 四虎在线免费观看 | av一二三区| 四虎影视av | 天天天天色射综合 | 天天操夜夜操天天射 | 日韩精品久久久久久中文字幕8 | 天天插狠狠干 | 色干综合 | 粉嫩av一区二区三区四区五区 | 天天干天天拍天天操天天拍 | 国产麻豆精品免费视频 | 免费黄色小网站 | 在线免费看黄色 | 在线观看黄av | 国语精品免费视频 | 中文字幕在线观看免费观看 | 在线观看日韩 | 99视频偷窥在线精品国自产拍 | 日韩精品免费一区 | 狠狠的操你 | 国产一级久久久 | 欧洲精品视频一区 | 久久网址 | 日韩在线观看视频中文字幕 | 国产在线视频在线观看 | 国产在线观看污片 | 国产精品久久网站 | 日韩草比| 国产美腿白丝袜足在线av | 日韩电影中文,亚洲精品乱码 | 国产丝袜一区二区三区 | 国产探花 | 色婷婷视频在线观看 | 精品国产电影一区 | 黄色一级大片在线免费看国产一 | 久久精品一二区 | 久久精品99国产精品日本 | 色.www| 国产色视频一区 | 手机在线看片日韩 | 九九视频精品免费 | av在线a| 天天曰视频 | 麻豆va一区二区三区久久浪 | 日日日视频 | 国产精品你懂的在线观看 | 国产小视频在线免费观看 | 亚洲精品99久久久久中文字幕 | 国产精品永久在线观看 | 久久不卡日韩美女 | 欧美一级久久久久 | 日韩黄在线观看 | 热精品 | 国产三级精品在线 | 日日碰狠狠添天天爽超碰97久久 | 欧美日韩中文在线 | 亚洲一区动漫 | 永久免费看av| 久久五月天婷婷 | 91精品免费在线观看 | 91网址在线观看 | 狠狠色丁香婷婷综合久小说久 | 色瓜| 91麻豆精品国产91久久久无限制版 | 91av视频网| 欧美精品亚洲二区 | 麻豆视频在线观看 | 日本黄色大片免费看 | 日韩专区在线观看 | 日韩av不卡在线观看 | www.国产精品 | 免费在线观看国产黄 | 欧日韩在线视频 | 91在线国内视频 | 国内精品免费 | 亚洲视频一 | 中文av不卡 | 色噜噜日韩精品欧美一区二区 | 国产黄免费在线观看 | 午夜黄色一级片 | av免费观看网站 | 一区二区三区四区影院 | 久久伦理 | 日日夜夜精品免费观看 | 国产中文字幕一区二区 | 波多野结衣精品视频 | 国产精品一区二区免费在线观看 | 国产成人香蕉 | 国产精品美 | 97在线观看免费观看 | 欧美日本啪啪无遮挡网站 | 天海翼一区二区三区免费 | 又黄又爽又无遮挡的视频 | 欧美午夜a | 亚洲成av人影院 | 正在播放国产精品 | 国产精品麻豆三级一区视频 | 久久久免费高清视频 | 色噜噜在线观看视频 | 国产精品一区二区三区免费看 | 日日夜夜狠狠干 | 亚洲乱码精品久久久久 | 国产中的精品av小宝探花 | 人人草人人草 | 亚洲3级| 天天插天天操天天干 | 国产精品美女久久久久久久久久久 | 韩国三级在线一区 | 在线av资源 | 国产69精品久久久久99尤 | 国产中文字幕亚洲 | 日韩电影在线视频 | 在线电影日韩 | 久久视频二区 | 国产精品一区二 | 天天射射天天 | 狠狠色伊人亚洲综合网站色 | 国产精品毛片一区视频 | 免费亚洲视频在线观看 | 国产精品久久久久久久久毛片 | 亚洲精品国产精品久久99 | 久久人人爽人人爽人人片av软件 | 夜添久久精品亚洲国产精品 | 天天操导航 | 狠狠狠狠干 | 在线观看黄网站 | 黄色软件视频大全免费下载 | 97超级碰碰碰视频在线观看 | 免费精品国产 | 日韩在线观看小视频 | 奇米网444 | www好男人| 日本在线成人 | 视频在线一区 | 国精产品满18岁在线 | 成人小视频在线播放 | 亚洲国产成人精品久久 | 五月婷网| 欧美一区日韩一区 | 成人免费视频视频在线观看 免费 | 中中文字幕av | 免费在线激情电影 | 中文字幕麻豆 | 黄av免费| 久久深夜 | 亚洲国产精品激情在线观看 | 在线观看涩涩 | av亚洲产国偷v产偷v自拍小说 | 国产手机视频在线观看 | 91在线小视频 | 成人黄色国产 | 免费观看mv大片高清 | 99精彩视频 | 国产精品黑丝在线观看 | 在线 高清 中文字幕 | 在线视频一区二区 | 园产精品久久久久久久7电影 | 色97在线 | av免费电影在线观看 | 日韩欧美中文 | 日韩视频 一区 | 亚洲一一在线 | 久久综合色影院 | 欧美激情第十页 | 欧美俄罗斯性视频 | 91在线看视频免费 | 久久久久久久久久久久久久电影 | 在线黄色观看 | 9在线观看免费 | 在线精品视频免费播放 | 日韩在线激情 | 美女视频黄频大全免费 | 91精品国产麻豆国产自产影视 | av中文字幕不卡 | 最新日本中文字幕 | 91亚瑟视频 | 国产黄色精品在线观看 | 一区二区精品国产 | 少妇bbb好爽 | 欧美日韩中文国产 | 久久综合久久88 | 日韩伦理一区二区三区av在线 | 国产a级免费 | 国内精品久久久久久久久久清纯 | 久久五月精品 | 91在线免费视频观看 | 天堂在线视频中文网 | 国产网红在线观看 | 日韩久久片 | 成年人看片| 成人av在线直播 | 亚洲三级黄| 久久丁香网| 欧美另类tv | 亚洲一区二区精品在线 | 国产成人精品久 | 视频1区2区 | aa级黄色大片 | 日韩一级精品 | 精品国偷自产国产一区 | 免费特级黄毛片 | 97香蕉久久超级碰碰高清版 | 精品国产91亚洲一区二区三区www | 日韩99热| 亚洲不卡123 | 婷婷视频在线播放 | 麻豆视频www | www五月婷婷 | 日日草天天干 | 激情五月激情综合网 | av在线官网 | av网站在线观看免费 | 久久五月天色综合 | 日韩在线观看免费 | 九九热免费精品视频 | 久久久久久在线观看 | 激情久久影院 | 在线观看中文字幕dvd播放 | 韩国一区视频 | 欧洲精品在线视频 | 国产专区免费 | 夜夜躁天天躁很躁波 | 国产精品mv | 国内精品久久久久久久影视简单 | 99色网站 | 国产h在线播放 | 亚洲精品videossex少妇 | 激情视频免费观看 | 99人久久精品视频最新地址 | 欧美午夜精品久久久久久浪潮 | 天天搞天天 | 性色av免费在线观看 | 久久久久久久久久免费视频 | 在线观看一级片 | 西西4444www大胆视频 | 国产精品一区二区久久国产 | 亚洲黄色区 | 精品自拍sae8—视频 | 天天夜夜亚洲 | 91九色自拍 | japanesexxxxfreehd乱熟| 国产黄色大片免费看 | 国产精品av在线免费观看 | 日本三级大片 | 日韩在线观看 | 亚洲男女精品 | 久久综合免费 | 国产黄色片免费在线观看 | 色婷婷成人 | 亚洲最大免费成人网 | 国内久久久 | 精品你懂的 | 五月综合激情网 | 国产精品激情偷乱一区二区∴ | 西西4444www大胆无视频 | 国产精品无 | 干天天 | 天天干天天干天天干天天干天天干天天干 | 91精品对白一区国产伦 | 人人干人人搞 | 一区二区三区四区五区在线 | 视频二区在线 | 一本一本久久a久久精品综合妖精 | 不卡在线一区 | 久久久网站 | 国产在线观看中文字幕 | 国产成人精品av久久 | 99精品区| 黄在线免费观看 | 日韩免费在线播放 | 欧美日韩在线观看一区二区三区 | 91在线精品一区二区 | 国内精品久久久久久久影视麻豆 | 久久精品国产一区 | 精品久久一区 | 香蕉影视在线观看 | 九九视频精品免费 | 日韩激情小视频 | 国产色视频一区二区三区qq号 | 久爱综合 | 国产精品成久久久久 | 91av看片 | 91精品视频在线看 | 91精品国产电影 | 日韩理论在线观看 | 午夜体验区 | 久久久久麻豆 | 久久精品这里都是精品 | 国产精品原创av片国产免费 | 91在线国产观看 | 黄色视屏在线免费观看 | 黄色看片 | 亚洲精品视频在线 | 久久综合影视 | 国产成人精品av | 欧美一区二区精美视频 | 伊人狠狠干 | 四虎影视久久久 | 国产手机视频精品 | 国产做aⅴ在线视频播放 | 国产成人精品久久 | 日韩精品一区二区三区在线视频 | 午夜久久电影网 | 日韩免费在线一区 | 国产中文字幕视频在线 | 91丨九色丨蝌蚪丰满 | 在线观看av的网站 | 在线欧美中文字幕 | 欧美日韩国产精品一区二区亚洲 | 色综合天天综合 | 香蕉影视| 五月婷婷色播 | 啪啪小视频网站 | 亚洲综合少妇 | 亚洲激情综合 | 最近日本中文字幕 | 麻豆视频免费在线观看 | 波多野结衣一区二区三区中文字幕 | 99re8这里有精品热视频免费 | 国产精品99久久久久的智能播放 | 亚洲激情电影在线 | 在线免费观看麻豆视频 |