最近在使用playwright开发自动续期(签到)软件,这里是笔记
安装
首先安装python。
# 安装playwright库
pip install playwright
# 安装浏览器驱动文件(安装过程稍微有点慢)
python -m playwright install
由于各版本略有不同,如果以上命令不能很好地完成,可以尝试
playwright install
playwright install-deps
sudo playwright install-deps
等
playwright录制
playWright最强大的功能就是录制脚本了。使用以下命令
python -m playwright codegen
开始录制。此时会打开一个浏览器页面,一个代码预览与控制界面。等待录制完成
后台运行和前台运行
使用
browser = playwright.chromium.launch(headless=True)
中的True
和Flase
控制后台运行和前台运行,推荐在调试时使用前台运行。
实现下拉页面
一种实现方式是使用PageDown
page.keyboard.press("PageDown")
实现聚焦
部分网站的图片使用了懒加载技术,即只有在聚焦于当前图片(窗口直接观看当前图片)时才会进行加载,如果不聚焦在这个图片上,直接获取元素,进行分析无法得到图片链接。
可以使用scroll语句进行跳转,需要先使用选择器选择元素,例如我这里的div
元素。然后进行跳转。跳转之后,为了完成懒加载的过程,我使用了一个死循环语句,直到加载完成再跳出循环,在加载过程中,每一秒钟获取一次加载信息,代码如下:
for div in divs:
# div.focus() 之前尝试使用focus语句,但是没有成功
# 首先使用此语句进行跳转
div.scroll_into_view_if_needed()、
# 不断尝试获取链接。直到获取成功,这里使用了一个beautifulsoup进行处理
while True:
time.sleep(1)
try:
inner = div.inner_html()
soup = BeautifulSoup(inner,'lxml')
imgurl = soup.img.attrs['src']
break
except:
pass
储存登录信息
一般而言我们储存登录信息是使用cookie,不过对于playwright有一个更加直接的、储存浏览器全部信息的方案:
可以看到, –save-storage与–load-storage是个非常实用的命令。 例如用下面命令访问网站并登陆,关闭浏览器时自动把cookie等浏览器信息存入hik文件中:
python -m playwright cr https://XXX.top –save-storage cway 使用时用下述命令直接调用,打开页面即为登陆状态:
python -m playwright cr https://XXX.top –load-storage cway
参考: