selenium 登录知乎

selenium最新模拟登录知乎

本篇主要内容利用selenium 分别模拟登录 电脑网页版知乎 和  安卓版网页知乎

环境:win7 ,pycharm,python3

所用到的库:selenium

之前我一直以为只有,明确的  id="xxx" 的时候,用driver.find_element_by_id("xxxx"),才可以提交用户名以及密码这类的表单,经过今天过后我知道了用find_element_by_xpath("//x/x/x")也是一样的,并且我用type类型测试,这两个类型一样。

selenium 登录知乎

首先先要找到手机账号和密码所在的地方,利用源代码可以知道 form下面第一个div其次下面div在然后div最后input找到。

selenium 登录知乎

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()
以上内容若有错误或用词不当,请留言指正,谢谢。