python爬蟲登陸問題
阿新 • • 發佈:2019-07-13
根據騰訊課堂網頁登陸問題進行解說(需要安裝谷歌瀏覽器):
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