最近在爬取QQ空间数据时出现了一些问题,在登录界面获取id为switcher_plogin的元素时,报错,提示找不到该元素,但是通过查看源码的确有这个元素,最终解决方法如下:
原因是需要先通过使用switch_to.frame()
这个方法来进入到frame中,这样就可以读取所指定的元素了。
比如:# switch frame driver_chrome.switch_to.frame("login_frame")
login_frame: 是指定元素所在的frame名称,我这里是QQ空间登录界面的,具体的需要据实际页面而定
下面是qq空间扫码登录界面跳转到用户名密码登录界面的代码,仅供参考
#!/usr/bin/env python
#-*- coding:utf-8 -*-
'''
@Time : 2019/10/18
@Author : Frank Su
@File : qzone.py
'''
import selenium
import selenium.webdriver
import time
if __name__ == "__main__":
# get driver
driver_chrome = selenium.webdriver.Chrome()
# load url
driver_chrome.get("https://qzone.qq.com/")
time.sleep(3)
# switch frame
driver_chrome.switch_to.frame("login_frame")
# get switcher elem
elem_Switch = driver_chrome.find_element_by_id("switcher_plogin")
# click
time.sleep(3)
elem_Switch.click()