1. 程式人生 > >python爬蟲登陸問題

python爬蟲登陸問題

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

1、匯入庫

import requests
from selenium import webdriver

2、根據騰訊課堂連結,進入頁面,獲取頁面中登陸的xpath,並進行點選操作

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

3、進入登陸頁面之後獲取登陸方式,本次選擇使用qq進行登陸,獲取qq登陸的xpath並進行點選操作。

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

4、點選使用賬號密碼登陸。在該登陸過程中出現以下錯誤。

  主要原因是無法找到我們定位的xpath,需要先找到定位元素所處的frame,並從frame中尋找該元素。

 

 

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

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

 

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("輸入自己的密碼")

6、點選登陸按鈕,至此就已經進入網頁版的騰訊課堂了。

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

 完整程式碼如下:

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()
driver.find_element_by_xpath('/html/body/div[4]/div/div[2]/div[2]/a[1]').click()

driver.switch_to_frame("login_frame_qq")//引號中新增frame標籤中的name或id值
driver.find_element_by_xpath('//*[@id="switcher_plogin"]').click() 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()

&n