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

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

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


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

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

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

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

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

#打開(kāi)一個(gè)頁(yè)面(QQ空間登錄頁(yè))
driver.get(‘http://qzone.qq.com’)
#登錄表單在頁(yè)面的框架中,所以要切換到該框架
driver.switch_to_frame(‘login_frame’)
#通過(guò)使用選擇器選擇到表單元素進(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)去抓取頁(yè)面內(nèi)容或其它腦洞大開(kāi)的應(yīng)用了~~~
安裝selenium庫(kù),建議直接使用pip工具

#pip install selenium


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

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

? ? ? ?

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

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

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

用戶(hù)評(píng)論頭像 coder發(fā)表于 2018年01月24日 18:51[回復(fù)]

你好,使用你的代碼,能夠打開(kāi)chrome瀏覽器并進(jìn)入登錄界面,但是代碼在執(zhí)行到driver.switch_to.frame(‘login_frame’) 時(shí)報(bào)錯(cuò)
data = self._sock.recv(self._rbufsize)
socket.error: [Errno 10054]
不知道是什么原因
環(huán)境python 2.7

用戶(hù)評(píng)論頭像 楓丶落葉發(fā)表于 2017年09月05日 21:27[回復(fù)]

python3.6.2 按照你這個(gè)寫(xiě)出來(lái)會(huì)有錯(cuò)誤消息“Message: ‘Application’ executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home”
我創(chuàng)建的是谷歌瀏覽器,本機(jī)沒(méi)有安裝火狐,錯(cuò)誤大概是說(shuō)需要打開(kāi)谷歌瀏覽器的路徑 但是不知道怎么解決,還有switch_to_frame這個(gè)函數(shù)在我這里是不建議使用的,煩請(qǐng)問(wèn)下現(xiàn)在這個(gè)庫(kù)這個(gè)函數(shù)改成什么名字啦。?謝謝!

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

    錯(cuò)誤消息字面上是說(shuō)可能chromedriver沒(méi)有權(quán)限執(zhí)行吧,不清楚你是在什么系統(tǒng)中運(yùn)行的,你可以檢查一下權(quán)限看看。至于switch_to_frame這個(gè)有什么替代的,我在stackoverflow你給找到了,原話是”driver.switch_to_frame() is deprecated now, please use driver.switch_to.frame()”。

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

change vcode