模拟登录知乎:利用selenium接管浏览器

本文借鉴于:https://www.cnblogs.com/lovealways/p/9813059.html

我们先使用浏览器登录退出知乎,电脑上还带着知乎的cookie,所以我们模拟登录的时候就可以跳过验证码(手动滑稽)

原理:我们使用selenium中的webdirver打开的浏览器没有浏览器记录,也就是最纯净的浏览器,所以也不会携带cookie之类的信息,但是我们使用selenium接管浏览器时,创建的浏览器时copy原来的浏览器配置文件,浏览器记录也会被copy,所以他会带上cookie信息

此次模拟登录的重点是会使用selenium接管浏览器:

chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"
#--remote-debugging-port,我们可以随意指定打开的端口
#-user-data-dir,这个是指定创建Chrome配置文件的目录,为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件
#一定将chrome.exe的路径添加到环境变量中

我们先使用命令行,输入上述命令,会出现一个浏览器,现在我们需要接管这个浏览器,

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

browser = webdriver.Chrome(chrome_options=chrome_options)

然后将接管浏览器中的登录知乎代码补充完整就可以实现整个功能

import time
browser.get("https://www.zhihu.com/signin?next=%2F")
time.sleep(3)

password_login = browser.find_element_by_xpath(".//div[@class='SignFlow-tab']")
password_login.click()

phone = browser.find_element_by_xpath(".//input[@name='username']")
password = browser.find_element_by_xpath(".//input[@name='password']")
phone.send_keys("知乎账号")
password.send_keys("知乎密码")

login = browser.find_element_by_xpath(".//button[@class='Button SignFlow-submitButton Button--primary Button--blue']")
login.click()

完整代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

browser = webdriver.Chrome(chrome_options=chrome_options)

browser.get("https://www.zhihu.com/signin?next=%2F")

time.sleep(3)


password_login = browser.find_element_by_xpath(".//div[@class='SignFlow-tab']")
password_login.click()
phone = browser.find_element_by_xpath(".//input[@name='username']")
password = browser.find_element_by_xpath(".//input[@name='password']")

phone.send_keys("知乎账号")
password.send_keys("知乎密码")

login = browser.find_element_by_xpath(".//button[@class='Button SignFlow-submitButton Button--primary Button--blue']")
login.click()

你可能感兴趣的:(爬虫学习)