进过两天的研究终于实现了饼干的免密登录,其实就是会话。特别开心,因为Python爬在虫群里问那些大佬,可是他们的回答令我寒心,自己琢磨! ! !
靠谁比如靠自己,为此我总结下经验,以免入门的小白再次踩这样的吭。其实网上很多博客写的都比较不详细甚
首先问题自己思考,不懂得去群里问问,然后最重要的要理解事物的本质,只有理解后才能运用它,最后在百度一下把所有相关的博客都点开,一条一条的看一遍总结下规律,比较喽的就舍弃,这样基本上都能得到启发作用,比如硒的本质就是操作浏览器的,那么操作饼也是操作浏览器的,并且用硒打开浏览器时什么都没有,如果进入某个网站就会生成饼干先关信息。等待,那么我们可以用硒打开网站之后让他清除所有饼干避免干扰,然后睡眠20秒以便等我们登陆,这是就会产生曲奇,我们将它获取下来就可以实现登陆了。
下面直接上代码:
#登录 def login_jd (): #登录前清除所有饼干 browser.get (“https://www.baidu.com/? browser.delete_all_cookies () #打印登录前的饼干 cookieBefore=browser.get_cookies () 打印(cookieBefore) 打印(“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -”) time . sleep (2) list_cookies=[ {“域”:“.baidu.com”,“httpOnly”:假的,“名字”:“H_PS_PSSID”,“路径”:“/?“安全”:假的,“价值”:“1420 _21120_29074_29237_2518_2909_29134_2832_28585_26350_2913}, {“域”:“.baidu.com”,“到期”:159184274.325927,“httpOnly”:假的,“名字”:“BAIDUID”,“路径”:“/?“安全”:假的,“价值”:“FF789623EA1785FF0D55ED0401D057B2: FG=1”}, {“域”:“www.baidu.com”,“到期”:1563289,“httpOnly”:假的,“名字”:“BD_UPN”,“路径”:“/?“安全”:假的,“价值”:“123143”}, {“域”:“.baidu.com”,“到期”:1560354688.892916,“httpOnly”:假的,“名字”:“BDORZ”,“路径”:“/?“安全”:假的,“价值”:“B490B5BF6F3CD40255D22BCDA1598”}, {“域”:“.baidu.com”,“到期”:1819468287.471656,“httpOnly”:真的,“名字”:“BDUSS”,“路径”:“/?“安全”:假的,“价值”:“tGem1JzblNpOa1VVek0yLThmbWR6RxENWZtcVNwUThpT2hCLTVsUFBQUFBJCQAAAAAAAAAAAEAAAA4MdBAd3d3d2dnZ2dnZWVlZWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkI ~ 1 y5cp9cvm”}, {“域”:“.baidu.com”,“到期”:2569420288,“httpOnly”:假的,“名字”:“BIDUPSID”,“路径”:“/?“安全”:假的,“价值”:“587 a2695fcd6d043a5fe5139e4f}, {“域”:“.baidu.com”,“到期”:3707755.819949,“httpOnly”:假的,“名字”:“PSTM”,“路径”:“/?“安全”:假的,“价值”:“156027786”}, {“域”:“www.baidu.com”,“httpOnly”:假的,“名字”:“BD_HOME”,“路径”:“/?“安全”:假的,“价值”:' 1 '} ] #获取之后的饼干 饼干=browser.get_cookies () print (browser.get_cookies ()) #将获取的的所有饼干添加到浏览器 饼干在list_cookies: browser.add_cookie(饼干) 打印(饼干) time . sleep (2) #刷新页面即可更新饼干 browser.refresh () time . sleep (505) browser.quit ()
<强>示例二:强>
首先使用用户名和账号,登录获取饼干
进口json 导入的时间 从selenium.webdriver.chrome。选择导入选项 从硒进口webdriver 从selenium.webdriver.support。等进口WebDriverWait 从selenium.common.exceptions进口NoSuchElementException 类爬虫(): def收集(): chrome_options=选项() chrome_options.add_argument(窗口大?1024,768) 司机=webdriver。铬(chrome_options=chrome_options executable_path=" C: \ devtool \蟒蛇\ Scripts \ chromedriver”) 等待=WebDriverWait(司机,1) # #登录百度知道 logurl=' https://zhidao.baidu.com/' #登录前清楚所有饼干 driver.delete_all_cookies () driver.get (logurl) # #登录前打印饼干 print (driver.get_cookies ()) # #点击登录按钮 driver.find_element_by_xpath ('//* [@ id=" userbar-login "]”) .click () # driver.find_element_by_id (“userbar-login”) .click () time . sleep (2) # #首次尝试的默认进入扫码登录的界面 试一试: footerULoginBtn=driver.find_element_by_xpath ('//* [@ id=" TANGRAM__PSP_10__footerULoginBtn "]”) footerULoginBtn.click() #切换到用户名和密码登录 footerULoginBtn_not_exist=False 除了: footerULoginBtn_not_exist=True # #用户名跟密码的设置并点击提交 用户=driver.find_element_by_name(用户名) user.clear () pwd=driver.find_element_by_name(密码) pwd.clear () 提交=driver.find_element_by_id (“TANGRAM__PSP_10__submit”) time . sleep (2) user.send_keys(“用户名”) pwd.send_keys(“密码”) time . sleep (1) submit.click () time . sleep (1) # #发送手机验证码验证 # #点击发送按钮 # # #是否需要输入手机验证码 试一试: driver.find_element_by_xpath ('//* [@ id=" TANGRAM__28__button_send_mobile "]”) .click () time . sleep (10) # #使用壳交互式,接受验证码 消息=输入(“验证码告诉我:”) # #输入验证码 验证码=driver.find_element_by_xpath ('//* [@ id=" TANGRAM__28__input_label_vcode "]”) time . sleep (1) captcha.send_keys(消息) time . sleep (1) # #点击提交 driver.find_element_by_xpath ('//* [@ id=" TANGRAM__28__button_submit "]”) .click () time . sleep (3) 除了: time . sleep (1) # # #获取饼干 饼干=driver.get_cookies () 打印(饼干) jsonCookies=json.dumps(饼干) 张开(“vcyber。json”、“w”)作为f: f.write (jsonCookies) time . sleep (30) Crawler.gather ()Python3 +硒实现饼干免密登录的示例代码