气象家园自动登录、签到Python脚本

利用Python简单的模拟登陆气象家园BBS,提供一种比较容易理解的思路,用于自动签到和访问空间,获取积分。目的不在于鼓励大家不劳而获,而从论坛只拿好处不谈贡献。主要还是简单实践一下,利用已有的工具去做点好玩的事情,解决自己的小麻烦,人非圣贤,也不是机器,毕竟每天签到也还是偶尔会中断的。

需要的工具

  1. Python3.6+ selenium ; ChromeDriver(版本需要匹配,下载链接)
  2. Shell 环境支持 crontab 命令

Python代码(下载:discuz_click.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# ======================================================================
# Author: Gavin | Affiliation: NJU
# Email : Zhpfu.atm@gmail.com
# Last modified: 2019-05-15 18:31
# Filename: discuz_click.py
# Description: 1.气象家园自动签到脚本(签到+访问别人空间)
# 2.非静默方式,比较初级的版本
# 3.需要借助Chrome、Firefox驱动模块
# ======================================================================
#-*- coding:utf-8 -*-
import time
import datetime
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains


option = Options()
# option.add_argument('--headless')
# option.add_argument('--disable-gpu')

username=r"风往北吹" #需要自己用户名修改
passwd="12345678" #需要自己的密码修改
browser = webdriver.Chrome( chrome_options=option)
browser.get('http://bbs.06climate.com/forum.php')
print(browser.title)
browser.maximize_window()

#自动填充用户名和密码,勾选自动登录,自动点击登录。
elem=browser.find_element_by_id("ls_username").send_keys(username)
elem=browser.find_element_by_id("ls_password").send_keys(passwd)
elem=browser.find_element_by_id("ls_cookietime").click()
browser.find_element_by_xpath('/html/body/div[5]/div/div[1]/form/div/div[1]/table/tbody/tr[2]/td[3]/button/em').click()
time.sleep(1)

#签到
browser.find_element_by_xpath('/html/body/div[5]/div/div[1]/div/p[2]/a[1]/img').click()
time.sleep(1)

#点击空间头像
browser.find_element_by_xpath('/html/body/div[5]/div/div[1]/div/div/a/img').click()
time.sleep(1)

#访问空间好友
browser.find_element_by_xpath('/html/body/div[6]/div/div/div[3]/div[1]/div[2]/ul/li[1]/a/img').click()

browser.find_element_by_xpath('/html/body/div[6]/div/div/div[3]/div[1]/div[2]/ul/li[2]/a/img').click()

browser.find_element_by_xpath('/html/body/div[6]/div/div/div[3]/div[1]/div[2]/ul/li[3]/a/img').click()

browser.find_element_by_xpath('/html/body/div[6]/div/div/div[3]/div[1]/div[2]/ul/li[4]/a/img').click()
time.sleep(5)

# print(browser.window_handles)
#退出浏览器
browser.quit()
#打印任务时间戳
i = datetime.datetime.now()
print ("完成时间 %s" % i)

selenium可以通过以下各个方法获取元素并进行各种操作,主要有以下几种:

  • find_element_by_id
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector

选取firefox来查看元素会更加直观!!!(强烈推荐,也同样有适用于firefox的驱动,geckodriver,在Mac下需要移动到/usr/local/bin目录下,或者,自定义,也OK!)

搭配 crontab 使用

创建sh脚本:click.sh

先找到python:

which python
/Users/zhpfu/anaconda3/bin/python

1
/Users/zhpfu/anaconda3/bin/python  /Users/zhpfu/Downloads/Discuz/discuz_click.py

修改sh脚本权限:
chmod 777 click.sh

设置自动执行命令:

$crontab e

输入:(每隔10小时运行一次)

* 10 * * * /bin/sh /Users/zhpfu/Downloads/Discuz/click.sh # 需要根据自己的路径来修改。

结尾

方法比较简单,还不够静默,必须要打开浏览器才行。后面再改进吧!

参考:

1.网址1
2.网址2

有任何问题都欢迎交流探讨,共同学习进步!


-------------本文结束 感谢阅读-------------
作者Gavin
有问题请在相应页面留言(评论系统DISQUS需要"翻墙"才可见)
或者私信给我 GMAIL: zhpfu.atm@gmail.com
满分是10分的话,这篇文章你给几分
--> -->