當(dāng)前位置:博客首頁>>Python >> 閱讀正文

使用Python+Selenium模擬登錄QQ空間

作者: 鄭曉 分類: Python 發(fā)布于: 2016-06-13 19:30 瀏覽:23,329 評(píng)論(23)


使用Python+Selenium模擬登錄QQ空間
爬QQ空間之類的頁面時(shí)大多需要進(jìn)行登錄,研究QQ登錄規(guī)則的話,得分析大量Javascript的加密解密,這絕對能掉好幾斤頭發(fā)。而現(xiàn)在有了selenium工具,麻麻再也不用擔(dān)心你的QQ登錄!

Selenium是一個(gè)WEB自動(dòng)化測試工具,它運(yùn)行時(shí)會(huì)直接實(shí)例化出一個(gè)瀏覽器,完全模擬用戶的操作,比如點(diǎn)擊鏈接、輸入表單,點(diǎn)擊按鈕提交等。所以我們使用它可以很方便的來登錄QQ空間。

#導(dǎo)入selenium2中的webdriver庫
from selenium import webdriver

#實(shí)例化出一個(gè)Firefox瀏覽器
driver = webdriver.Firefox()

#設(shè)置瀏覽器窗口的位置和大小
driver.set_window_position(20, 40)
driver.set_window_size(1100,700)

#打開一個(gè)頁面(QQ空間登錄頁)
driver.get(‘http://qzone.qq.com’)
#登錄表單在頁面的框架中,所以要切換到該框架
driver.switch_to_frame(‘login_frame’)
#通過使用選擇器選擇到表單元素進(jìn)行模擬輸入和點(diǎn)擊按鈕提交
driver.find_element_by_id(‘switcher_plogin’).click()
driver.find_element_by_id(‘u’).clear()
driver.find_element_by_id(‘u’).send_keys(‘917464311’)
driver.find_element_by_id(‘p’).clear()
driver.find_element_by_id(‘p’).send_keys(‘123456’)
driver.find_element_by_id(‘login_button’).click()

#do something….
#退出窗口
driver.quit()

這樣就能方便的登錄到QQ空間,下一步就可以利用這個(gè)登錄狀態(tài)去抓取頁面內(nèi)容或其它腦洞大開的應(yīng)用了~~~
安裝selenium庫,建議直接使用pip工具

#pip install selenium


2017-02-28 更新:
有網(wǎng)友反映登錄時(shí)出現(xiàn)異常,我只能表示無能為力,我只是用過selenium,并不能解決各種疑難雜癥,今天又收到回復(fù)說是無法使用,我以為是騰訊改什么規(guī)則了,所以又測試了一下沒發(fā)現(xiàn)問題,并錄制了gif,如下圖(點(diǎn)擊查看高清…):

環(huán)境:64位Win10 + chromedriver(2.27) + python2.7 + 密碼在運(yùn)行時(shí)已經(jīng)修改了:)

? ? ? ?

本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請注明出處及相應(yīng)鏈接。

本文永久鏈接: http://www.yjfs.org.cn/python-selenium-qzone-login.html

使用Python+Selenium模擬登錄QQ空間:目前有23 條留言

用戶評(píng)論頭像 十分感謝發(fā)表于 2017年08月22日 23:50[回復(fù)]

請問如果使用python3的話,有什么需要修改的地方嗎?

    用戶評(píng)論頭像 鄭曉發(fā)表于 2017年08月23日 09:13[回復(fù)]

    基本不需要改,只是一些小地方,比如print函數(shù)、比如可以不進(jìn)行編碼轉(zhuǎn)換,這個(gè)得你自己試。

用戶評(píng)論頭像 zh30發(fā)表于 2017年08月12日 08:51[回復(fù)]

大神你好,請問能擴(kuò)展下寫個(gè)Python下載QQ相冊的教程嗎? 冰天雪地360度跪求?。?!

用戶評(píng)論頭像 kazz發(fā)表于 2017年07月10日 16:05[回復(fù)]

請問一下那個(gè)密碼寫的是****在運(yùn)行時(shí)是修改為正確密碼,這個(gè)怎么弄得?

    用戶評(píng)論頭像 鄭曉發(fā)表于 2017年07月11日 10:37[回復(fù)]

    哈哈,其實(shí)保存的是正確的明文密碼,只是我打開編輯開始錄屏?xí)r把密碼修改了。

      用戶評(píng)論頭像 kazz發(fā)表于 2017年07月21日 09:26[回復(fù)]

      好吧,還以為能用Python實(shí)現(xiàn)暗文密碼登錄呢

用戶評(píng)論頭像 忠誠的鍋貼發(fā)表于 2017年02月11日 11:03[回復(fù)]

您好,我用這一段代碼測試,然后再點(diǎn)擊登錄按鈕后,qq空間會(huì)顯示網(wǎng)絡(luò)正忙,但是我自己在瀏覽器上面點(diǎn)擊登錄鍵卻可以登錄進(jìn)去,這是怎么樣的情況呢?

    用戶評(píng)論頭像 鄭曉發(fā)表于 2017年02月11日 16:06[回復(fù)]

    這我還真不清楚呢,程序運(yùn)行時(shí)有報(bào)什么錯(cuò)么?

      用戶評(píng)論頭像 Crazy-Fred發(fā)表于 2017年02月28日 13:49[回復(fù)]

      您好!我也運(yùn)行了這一段代碼,打開了網(wǎng)頁,但是顯示網(wǎng)絡(luò)繁忙,請稍后再試。我直接點(diǎn)擊登錄就可以進(jìn)去QQ空間。程序運(yùn)行沒有報(bào)錯(cuò),想請教一下是什么問題

        用戶評(píng)論頭像 鄭曉發(fā)表于 2017年02月28日 14:30[回復(fù)]

        這個(gè)我真解決不了,我只是用過selenium,但并不能解決各種疑難雜癥,我剛測試過了沒有問題。請看文章下方的更新。

用戶評(píng)論頭像 心累發(fā)表于 2017年01月09日 18:22[回復(fù)]

我報(bào)NoneType object is not callable這個(gè)錯(cuò)誤怎么辦

    用戶評(píng)論頭像 心累發(fā)表于 2017年01月09日 18:31[回復(fù)]

    好了;謝謝博主

用戶評(píng)論頭像 lin發(fā)表于 2016年11月02日 17:35[回復(fù)]

我登錄后獲取driver.get_cookies()就報(bào)這個(gè)錯(cuò)can’t access dead object。您知道是什么原因嗎

    用戶評(píng)論頭像 鄭曉發(fā)表于 2016年11月02日 20:03[回復(fù)]

    我沒遇到過這個(gè)問題,你看打開的瀏覽器是否有多選項(xiàng)卡?

用戶評(píng)論頭像 打鐵像渣科發(fā)表于 2016年09月29日 15:04[回復(fù)]

如何利用這個(gè)登錄狀態(tài)去抓取頁面內(nèi)容?

    用戶評(píng)論頭像 鄭曉發(fā)表于 2016年09月29日 15:07[回復(fù)]

    保存cookie,可以參考我的另一篇文章《python+selenium實(shí)現(xiàn)QQ群自動(dòng)簽到》

用戶評(píng)論頭像 奔跑中的笨蛋發(fā)表于 2016年08月22日 11:10[回復(fù)]

看不懂看不懂??!暫時(shí)沒有學(xué)習(xí)這個(gè)

用戶評(píng)論頭像 認(rèn)真的油茶發(fā)表于 2016年07月23日 23:23[回復(fù)]

有用。。。。剛剛需要。。。

用戶評(píng)論頭像 非常感謝發(fā)表于 2016年06月21日 23:39[回復(fù)]

非常感謝您,剛研究這個(gè)玩意,很多不懂的,覺得點(diǎn)擊位置是正確的就是總是出錯(cuò),還以為是瀏覽器問題,弄了很久,然后才發(fā)現(xiàn)沒有切換到框架里面

發(fā)表評(píng)論

change vcode