python爬蟲登錄網頁版騰訊課堂

 根據騰訊課堂網頁登錄問題進行解說(須要安裝谷歌瀏覽器):html

一、導入庫web

import requests from selenium import webdriver

二、根據騰訊課堂連接,進入頁面,獲取頁面中登錄的xpath,並進行點擊操做。瀏覽器

  獲取xpath的方法是:在如上所示箭頭所指登錄位置右擊操做,點擊檢查,獲取如下頁面。在登錄所在標籤處右擊進行復制xpath。框架

driver = webdriver.Chrome() driver.get("https://ke.qq.com/course/403521") driver.find_element_by_xpath('//*[@id="js_login"]').click()

三、進入登錄頁面以後獲取登錄方式,本次選擇使用qq進行登錄,獲取qq登錄的xpath並進行點擊操做。spa

driver.find_element_by_xpath('/html/body/div[4]/div/div[2]/div[2]/a[1]').click()

四、點擊使用帳號密碼登錄。在該登錄過程當中出現如下錯誤。3d

  主要緣由是沒法找到咱們定位的xpath,須要先找到定位元素所處的frame,並從frame中尋找該元素。code

 

 

driver.switch_to_frame("login_frame_qq")//引號中添加frame標籤中的name或id值 driver.find_element_by_xpath('//*[@id="switcher_plogin"]').click()

五、獲取到輸入帳號密碼以及登錄位置的xpath。當運行時再次出現定位不到xpath的狀況,使用第四步的方法依舊沒能成功,提示所在框架不對,估計是跟第4步的frame標籤的name相同的緣由吧。最後的解決方法是:先回到最外層框架,以後進入要定位元素的框架,最後對帳號密碼進行定位。htm

 

driver.switch_to.default_content()//回到最外層框架 driver.switch_to_frame("login_frame_qq")//進入定位元素的框架 driver.find_element_by_xpath('//*[@id="u"]').clear() driver.find_element_by_xpath('//*[@id="u"]').send_keys("輸入本身的帳號") driver.find_element_by_xpath('//*[@id="p"]').clear() driver.find_element_by_xpath('//*[@id="p"]').send_keys("輸入本身的密碼")

六、點擊登錄按鈕,至此就已經進入網頁版的騰訊課堂了。blog

driver.find_element_by_xpath('//*[@id="login_button"]').click()

 完整代碼以下:element

import requests from selenium import webdriver driver = webdriver.Chrome() driver.get("https://ke.qq.com/course/403521") driver.find_element_by_xpath('//*[@id="js_login"]').click()
time.sleep(5)//等待響應 driver.find_element_by_xpath(
'/html/body/div[4]/div/div[2]/div[2]/a[1]').click() time.sleep(2)
driver.switch_to_frame("login_frame_qq")//引號中添加frame標籤中的name或id值
driver.find_element_by_xpath('//*[@id="switcher_plogin"]').click()
time.sleep(2)
driver.switch_to.default_content()//回到最外層框架
driver.switch_to_frame("login_frame_qq")//進入定位元素的框架
driver.find_element_by_xpath('//*[@id="u"]').clear()
driver.find_element_by_xpath('//*[@id="u"]').send_keys("輸入本身的帳號")
driver.find_element_by_xpath('//*[@id="p"]').clear()
driver.find_element_by_xpath('//*[@id="p"]').send_keys("輸入本身的密碼")
driver.find_element_by_xpath('//*[@id="login_button"]').click()

 本次實驗使用的是Jupyter進行的分段操做,若是合併代碼進行實驗應改變sleep時間,確保頁面已經更新。若有問題,歡迎批評指正,謝謝。

相關文章
相關標籤/搜索