selenium 登录知乎
selenium最新模拟登录知乎
本篇主要内容利用selenium 分别模拟登录 电脑网页版知乎 和 安卓版网页知乎
环境:win7 ,pycharm,python3
所用到的库:selenium
之前我一直以为只有,明确的 id="xxx" 的时候,用driver.find_element_by_id("xxxx"),才可以提交用户名以及密码这类的表单,经过今天过后我知道了用find_element_by_xpath("//x/x/x")也是一样的,并且我用type类型测试,这两个类型一样。
首先先要找到手机账号和密码所在的地方,利用源代码可以知道 form下面第一个div其次下面div在然后div最后input找到。
username = brower.find_element_by_xpath("//form[@class=\"SignFlow\"]/div/div/div/input") #通过xpath 寻找第一个表单--用户名
同理密码表单页照样如此。
password = brower.find_element_by_xpath("//form/div[2]/div/div/input") #密码
代码如下:
#coding:utf-8 import time from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.common.exceptions import ElementNotVisibleException def loginzhihu(user,pwd): try: brower = webdriver.Chrome() #调用Chrome浏览器 brower.get("https://www.zhihu.com/signin") #打开url #print(brower.page_source) print("login 访问") username = brower.find_element_by_xpath("//form[@class=\"SignFlow\"]/div/div/div/input") #通过xpath 寻找第一个表单--用户名 print(username) print(type(username)) #打印username的类型 time.sleep(10) username.send_keys(user) password = brower.find_element_by_xpath("//form/div[2]/div/div/input") #密码 time.sleep(2) password.send_keys(pwd + Keys.ENTER) #读取密码并回车 time.sleep(10) #休眠十秒 brower.quit() #退出浏览器 except ElementNotVisibleException as e: #进行错误提示 print(e) user="知乎账号" pwd="知乎密码" loginzhihu(user,pwd) #调用函数传递参数
模拟登陆手机版知乎
与网页版知乎最大的区别就是,要模拟手机型号,selenium提供了一个很好的参数设置
moiblesetting = {"deviceName": "iPhone 6 Plus"} #设置手机型号 #调用Chrome浏览器并设置参数 option = webdriver.ChromeOptions() option.add_experimental_option("mobileEmulation", moiblesetting) brower = webdriver.Chrome(chrome_options=option) brower.set_window_size(400, 800) #窗口大小 brower.get("https://www.zhihu.com/signin") #访问链接
具体代码实现如下:
#coding:utf-8 import time from selenium import webdriver from scrapy.http import HtmlResponse from selenium.webdriver.common.keys import Keys moiblesetting = {"deviceName": "iPhone 6 Plus"} #设置手机型号 #调用Chrome浏览器并设置参数 option = webdriver.ChromeOptions() option.add_experimental_option("mobileEmulation", moiblesetting) brower = webdriver.Chrome(chrome_options=option) brower.set_window_size(400, 800) #窗口大小 brower.get("https://www.zhihu.com/signin") #访问链接 print("login 访问") elem = brower.find_element_by_xpath("//div[@class=\"Login-signinTypes\"]/div/button") time.sleep(2) elem.click() #username = brower.find_element_by_id("username") username = brower.find_element_by_xpath("//div[@class=\"BindPhoneForm-login\"]/div[1]/div[2]/div/input") print(username) print(type(username)) password = brower.find_element_by_xpath("//div[@class=\"SignFlow-password\"]/div/div/input") time.sleep(1) username.send_keys(u"你的账户名") time.sleep(2) password.send_keys("你的账户密码" + Keys.ENTER) #click = brower.find_element_by_id("btn-submit") #click.click() time.sleep(10) brower.quit()以上内容若有错误或用词不当,请留言指正,谢谢。