一.项目背景
在之前文章构建Cookie池(一)我们介绍了如何全自动化利用Selenium构建Cookie池。但是在实际开发中,我们经常会遇到反爬措施,成功登录网页的情况也不常见,比如会遇到图形验证码和滑块等,破解时也比较麻烦,比较好的方法就是我们手动协助登录,也就是半自动化式获取Cookie,这也相对来说是一个比较万能的方法。
本次项目我们爬取的目标网址还是闪职网,一个专门为爬虫工程师进行练习的网址,也
在此非常感谢网站后台维护人员辛勤付出,网址为:http://shanzhi.spbeen.com/,从
中可以看出Cookies有csrftoken和shanzhi_kmer以及它们各自对应的值
二.实现过程
from selenium import webdriver
import time
import json
#用户名
users=[
{'username':'test123456','password':'test123456'},
{'username':'wfq123','password':'123'},
{'username':'cauwfq','password':'cauwfq'},
{'username':'cauwfq1234','password':'cauwfq1234'}
]
#程序将预处理内容全部处理好
#浏览器等着用户来处理,比如登录
#用户处理的同时,程序一直在监听
#直到用户直接关闭浏览器,程序发生异常,继续往下执行
def wait_cookie(driver):
#循环监听
while True:
try:
#获取cookies
cookie_list=driver.get_cookies()
#获取cookie值
cookie_dict={ck['name']:ck['value'] for ck in cookie_list}
#输出cookie值
print(cookie_dict)
except:
#写入文件
with open('./cookies_1.txt', 'a+', encoding='utf8') as f:
#写入字典
f.write(json.dumps(cookie_dict))
#写入换行符
f.write('n')
break
#睡眠3s
time.sleep(3)
#登录网址
def login(username,password):
#初始化url
url='http://shanzhi.spbeen.com/login/'
#初始化webdriver
driver=webdriver.Chrome()
#最大化窗口
driver.maximize_window()
#请求url
driver.get(url)
#用户名输入框
username_input=driver.find_element_by_xpath('//*[@id="username"]')
#发送用户名
username_input.send_keys(username)
#休眠1秒钟
time.sleep(1)
#密码输入框
password_input=driver.find_element_by_xpath('//*[@id="MemberPassword"]')
#发送密码
password_input.send_keys(password)
#获取cookie
wait_cookie(driver)
if __name__ == '__main__':
#遍历每个用户
for user in users:
#登录获取cookie
login(user['username'],user['password'])
全部0条评论
快来发表一下你的评论吧 !