selenium篇之半自动发帖机
前言
selenium不用多说,是一个非常强大的用于爬虫、网页自动化测试的库。在我看来,对比于一般的基于http/https协议的爬虫来说,其优势可以分为以下两点:
1.不需要了解协议的具体实现细节,这也就避免了对部分加密参数繁琐的解密过程。
2.因为selenium是模拟真实用户的访问,可以有效避免部分网站采取的反爬、或网页优化策略导致爬虫制作难度、成本提高(如字体加密、懒加载等)的问题。
但其缺点也很致命,需要更多的资源、速度较慢。
综上所述,对于一般网站而言http/https协议的爬虫有着很大的优势,但对于不熟悉协议的新手或者网站爬取难度较大的情况下,使用selenium来操作无疑是一个省时省力的最佳选择。
需求分析
某论坛阅读帖子需要较高等级,而等级可以通过发言得到积分来提升,但发言要有间隔才能有效获取积分,所以需要设置多个帖子的定时发送,并预设评论,从而有效的获取积分。
主要工作
0X00 论坛登录
使用谷歌浏览器进行操作,其中一个主要原因是利用谷歌浏览器提供的无头模式,这样可以不影响正常工作。
chrome_options.add_argument('--headless')
首次访问论坛时,必须登录账号,并保持会话。
1.填写表单并提交
2.获取cookie并保存到本地,其主要目的是,后台长时间的等待指令执行时可以先关闭浏览器对象节约资源,并在启动一个新的浏览器后,将cookie填入实现免登录。
相关的cookie保存于读取代码如下
# 保存cookie操作
def save_cookie(self):
with open('cookies', 'wb') as f_obj:
pickle.dump(obj=self.__driver.get_cookies(), <