weiboSpider
weiboSpider copied to clipboard
思考:自动化工作流程之邮件提醒,多线程工作!
大佬我又来了!!这回有个新的想法 1 返回状态码及邮件提醒 之前因为各种原因比如网络,比如硬盘,程序会中断,但是只有等到下次再打开终端的时候才能发现程序有没有完成,所以就是想 能不能提供一种状态码,写入对应的log文档,再通过别的程序发送到邮箱,我现在测试的结果是用ssmtp来写脚本,运行完程序就发送邮件。但是不知道运行结果,所以只能算是提醒,所以想能不能这么做。
分支1
流程1 程序正常运行,运行完成后返回代码 0 表示无错误 爬虫正常运行成功
流程2 将 代码0 写入 log.txt 文档
流程3 通过其它软件 将 爬虫结果发送到指定邮箱 通知已经完成
分支2
流程1 程序出现错误,反对代码 1 (主要是现在的程序一旦错误,返回的都是错误的具体信息,而非一个代码值,所以不太好作为状态码,发送,所以想直接将所有非正常情况都视作失败,提醒程序员重新运行爬虫
流程2 将代码2 写入 log.TXT 文档
流程3 发送邮件 提醒程序员重新运行爬虫
分支1-1(扩展思考)
流程1 爬虫正常运行,每爬取完一个ID 就生成一次状态码 或者定时获取信息(当前爬虫运行到了什么位置 已经爬取了多少内容 已经爬了多少个ID)
流程2 将状态码写入 log.TXT 并触发shell脚本 或者邮件信息
流程3 程序员收到邮件 得到当前程序运行状况
2 多线程工作 大佬!!!求问有没有考虑过这样的线程工作方式,让程序多进入几个Cookie,然后每个cookie视作一个爬虫,然后每个爬虫从user_ID_list中领取一个ID 爬取 爬完以后再进行下一个,这样可能会快很多欸!!
user_ID_list
id1
id2
id3
id4
id5
id6
·········
cookies
cookie1
cookie2
-----
程序运行爬虫
cookie1 -->id1
cookie2 -->id2
cookie1 完成id1 继续爬取id3
cookie2 完成id2 继续爬取id4
cookie1 完成id3 继续爬取id5
cookie1 完成id5 继续爬取id6
综上!!给大佬添麻烦了!!!
感谢热心建议。
1.第一个建议非常好,邮件提醒是一个非常不错的提议,细节上还要考虑。因为程序出错有两种情况,一是程序继续执行,二是停止执行,以及出错了发送哪些信息给使用者,让使用者继续执行等; 2.考虑过多线程。感觉你想说的是分布式,因为在单机上如果有多个cookie,如果ip不变也是会被限的,需要多ip和多cookie。
上面两个都是非常不错的建议,有时间会逐步实现,因为有其它事情,近期可能不能实现。再次感谢,两个都是非常好的建议:smile:
这两个功能看上去非常棒!想问一下在工程中实现了吗?
@pythonpythonxyj
第一个在计划中,将来会实现。第二个不会实现了,因为本程序是为了帮助个人使用者,如学术研究、写论文或者获取男神女神的微博等。相对而言,对速度要求不高。如果换成多ip多cookie,可能会被用于商业,这不是本项目的初衷,也可能有法律风险。目前的程序对大部分个人使用者是够用的。因为速度足够慢,所以避免了商业项目使用本项目。希望能够理解。
大佬我又来了!!这回有个新的想法 1 返回状态码及邮件提醒 之前因为各种原因比如网络,比如硬盘,程序会中断,但是只有等到下次再打开终端的时候才能发现程序有没有完成,所以就是想 能不能提供一种状态码,写入对应的log文档,再通过别的程序发送到邮箱,我现在测试的结果是用ssmtp来写脚本,运行完程序就发送邮件。但是不知道运行结果,所以只能算是提醒,所以想能不能这么做。
分支1 流程1 程序正常运行,运行完成后返回代码 0 表示无错误 爬虫正常运行成功 流程2 将 代码0 写入 log.txt 文档 流程3 通过其它软件 将 爬虫结果发送到指定邮箱 通知已经完成 分支2 流程1 程序出现错误,反对代码 1 (主要是现在的程序一旦错误,返回的都是错误的具体信息,而非一个代码值,所以不太好作为状态码,发送,所以想直接将所有非正常情况都视作失败,提醒程序员重新运行爬虫 流程2 将代码2 写入 log.TXT 文档 流程3 发送邮件 提醒程序员重新运行爬虫 分支1-1(扩展思考) 流程1 爬虫正常运行,每爬取完一个ID 就生成一次状态码 或者定时获取信息(当前爬虫运行到了什么位置 已经爬取了多少内容 已经爬了多少个ID) 流程2 将状态码写入 log.TXT 并触发shell脚本 或者邮件信息 流程3 程序员收到邮件 得到当前程序运行状况2 多线程工作 大佬!!!求问有没有考虑过这样的线程工作方式,让程序多进入几个Cookie,然后每个cookie视作一个爬虫,然后每个爬虫从user_ID_list中领取一个ID 爬取 爬完以后再进行下一个,这样可能会快很多欸!!
user_ID_list id1 id2 id3 id4 id5 id6 ········· cookies cookie1 cookie2 ----- 程序运行爬虫 cookie1 -->id1 cookie2 -->id2 cookie1 完成id1 继续爬取id3 cookie2 完成id2 继续爬取id4 cookie1 完成id3 继续爬取id5 cookie1 完成id5 继续爬取id6综上!!给大佬添麻烦了!!!
第一个需求,不直接运行爬虫,而是用另一个py文件运行 参数名称 = os.system运行Ins py的命令,然后result是否等于0或1,就知道是否运行成功了。 然后判断一下给自己发邮件,不知道这样是否可行?具体没尝试。 另外,发送的时候可以配套发送一下log文件,看看里面有没有出错一类的。
自动化流程主要就是抛错通知吧。直接主函数一个try catch,通知一下再抛错即可。邮件服务器之前用office365的outlook不好使,可以试试pushdeer。我准备在另个免cookie爬虫上pushdeer通知cookie失效。