python+selenium自动登录qq空间并下载相册
基于selenium的自動登錄qq空間并遍歷所有相冊及相片的功能。只能訪問自己或好友(有訪問權限)的相冊,好友有密碼的相冊不可能。。。這里只是介紹流程,所以只是實現了遍歷,并未實現圖片文件的下載保存。讀取相冊信息是請求的手機版qq空間的相冊相關接口,其中寫死了只遍歷前50個相冊,可以自己改。
腳本并未處理任何可能出現的錯誤,請自己完善。
在環境:64位win7+python2.7+selenium3.5.0+chromedriver2.31 下測試通過。
#!coding:utf-8
from?selenium?import?webdriver
import?requests,time,json
login_uin?=?'123456789'?#登錄qq
pwd?=?'zx1233211234567'?#登錄密碼
album_uin?=?'123456789'?#要讀取相冊的qq
s?=?requests.Session()
#實例化出瀏覽器開始登錄
driver?=?webdriver.Chrome()
driver.set_window_size(1000,600)
driver.get('https://mobile.qzone.qq.com')
driver.find_element_by_id('u').clear()
driver.find_element_by_id('u').send_keys(login_uin)
driver.find_element_by_id('p').clear()
driver.find_element_by_id('p').send_keys(pwd)
driver.find_element_by_id('go').click()
#等待瀏覽器中js計算出qzonetoken
while?True:
? ? qzonetoken?=?driver.execute_script("return window.shine0callback")
? ??if?qzonetoken:
? ? ? ??break
? ??time.sleep(0.1)
#讀取QQ出售平臺cookie后關閉瀏覽器
cookies?=?driver.get_cookies()
driver.quit()
cookies_?=?{}
for?cookie?in?cookies:
? ??if?cookie['name']?==?'p_skey':
? ? ? ? skey?=?cookie['value']
? ??#s.cookies.set(cookie['name'], cookie['value'])
? ? cookies_[cookie['name']]?=?cookie['value']
#計算gtk
e?=?5381
for?i?in?range(len(skey)):
? ? e?=?e +?(e<<5)+ord(skey[i])
g_tk?=?str(2147483647?& e)
###################### www.zh30.com ######################
#請求中添加cookie,開始讀取相冊列表
requests.utils.add_dict_to_cookiejar(s.cookies,?cookies_)
url="https://mobile.qzone.qq.com/list?qzonetoken="+qzonetoken+"&g_tk="+g_tk+"&format=json&list_type=album&action=0&res_uin="+album_uin+"&count=50"
r?=?s.get(url);
data?=?json.loads(r.text.encode('utf-8'))
for?album?in?data['data']['vFeeds']:
? ??print?'相冊名:'+album['pic']['albumname'].encode('utf-8')
? ??print?'相冊id:'+album['pic']['albumid'].encode('utf-8')
? ??print?'圖片數量:'?+?str(album['pic']['albumnum'])
? ??print?'開始下載相冊圖片:'
? ??#讀取當前相冊中的圖片列表
? ? url?=?"https://h5.qzone.qq.com/webapp/json/mqzone_photo/getPhotoList2?qzonetoken="+qzonetoken+"&g_tk="+g_tk+"&uin="+album_uin+"&albumid="+album['pic']['albumid'].encode('utf-8')+"&ps=0"
? ? r?=?s.get(url)
? ? photo_datas?=?json.loads(r.text.encode('utf-8'))
? ??for?T?in?photo_datas['data']['photos']:
? ? ? ??for?pic?in?photo_datas['data']['photos'][T]:
? ? ? ? ? ??print?'圖片名:'+pic['picname'].encode('utf-8')+',url:'+pic['1']['url'].encode('utf-8')
? ??print?"="*10
以下是運行截屏,右鍵圖片在新標簽頁打開,可以高清~
?
總結
以上是生活随笔為你收集整理的python+selenium自动登录qq空间并下载相册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vscode+XDebug调试远程环境(
- 下一篇: websocket python爬虫_p