2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 网络爬虫playwright实现网站自动登录并签到

网络爬虫playwright实现网站自动登录并签到

时间:2021-12-30 14:44:42

相关推荐

网络爬虫playwright实现网站自动登录并签到

网络爬虫使用playwright工具来替代selenium工具,模拟浏览器加载动态网页,应对使用了json、ajax的复杂网站,从而通过网络爬虫实现网站自动登录并签到,设计思想如下:

1、打开网站登录页面,输入登录账号进行登录;

2、保存已登录cookies信息用于下次自动登录;

3、使用已获取的cookies来免登陆,打开签到页面,点击签到按钮,实现签到。

import timeimport json# 使用playwright同步APIfrom playwright.sync_api import sync_playwright# 实现XX网站自动签到# 自动登录,保存Cookies到文件。def saveCookies():with sync_playwright() as p:# 显示浏览器,每步操作等待50毫秒browser = p.firefox.launch(headless=False, slow_mo=50)context = browser.new_context()page = context.new_page()#读取登录账户信息userf = open('login_account.txt', 'r').readlines()#对账号进行枚举for count, user in enumerate(userf):user = user.split(',')# 用户名及密码usrname = user[0]passwd = user[1]# 登录操作,打开登录页面,输入账号page.goto('你的网址')page.locator('//*[@id="email"]').fill(usrname)page.locator('//*[@id="passwd"]').fill(passwd)page.locator('//*[@id="login"]').click()#等待,用户需要输入验证码等手工处理str = 'y'while str == 'y':str = input('等待中,是否继续等待?y/n。请输入:') # 控制休眠时间# time.sleep(2) # 等待页面跳转后,再获取cookies# 获取网站cookiescookies = context.cookies()print(page.title())#两个账号,循环登录,保存cookies到不同文件if count == 0:f = open('cookies163.txt', 'w')else:f = open('cookiesqq.txt', 'w')json.dump(cookies, f)print('已获取cookies')f.close()time.sleep(3)browser.close()# 加载已保存的cookiesdef loadCookies(cookief):# 从保存文件中提取cookies,进行免登陆cookiefile = open(cookief, 'r')cookie_list = json.load(cookiefile) # json读取cookiescookiefile.close()return cookie_list# 使用cookies自动登录,然后进行签到def signIn():with sync_playwright() as p:browser = p.firefox.launch(headless=False, slow_mo=50)context = browser.new_context()cookiefiles = ['cookies163.txt', 'cookiesqq.txt']for cookiefile in cookiefiles:context.add_cookies(loadCookies(cookiefile)) # 加载已保存的cookies,免登陆page = context.new_page()page.goto('你的签到网页', timeout=50000)time.sleep(1) # 等待页面加载# 点击签到按钮button = page.locator('//html/body/div/div/section[2]/div[2]/div[3]/div/div[2]/p[2]/button')button.click()#等待,用户需要输入验证码等手工处理str = 'y'while str == 'y':str = input('等待中,是否继续等待?y/n。请输入:') # 控制休眠时间page.close()browser.close()saveCookies()signIn()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。