zoukankan      html  css  js  c++  java
  • 签到领金币

      1 #!/use/bin/env python
      2 # -*- coding: utf-8 -*
      3 # Author    :    nick
      4 # Desc        :    v2ex每日签到
      5 
      6 import urllib
      7 import urllib2
      8 import cookielib
      9 import re
     10 import sys
     11 from bs4 import BeautifulSoup as bs 
     12 from datetime import datetime
     13 
     14 
     15 reload(sys)
     16 sys.setdefaultencoding('utf-8')
     17 
     18 
     19 
     20 
     21 login_URL = 'http://www.v2ex.com/signin'        #登录地址
     22 daily_URl = 'http://www.v2ex.com/mission/daily' #签到地址
     23 balance_url = 'http://v2ex.com/balance'            #账户余额
     24 user = 'test'                          #账号
     25 passwd = 'test'
     26 today = datetime.today()
     27 time = today.strftime("%Y-%m-%d %X ")
     28 
     29 '''
     30 由于需要登录后访问页面,所以这里需要使用cookie进行session跟踪
     31 '''
     32 
     33 cookie = cookielib.CookieJar()                        #获取一个cookie对象
     34 handler = urllib2.HTTPCookieProcessor(cookie)        #利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
     35 opener = urllib2.build_opener(handler)                #装载cookie,通过handler来构建opener
     36 
     37 '''
     38 opener:当你获取一个URL你使用一个opener(一个urllib2.OpenerDirector的实例)。平时使用的默认opener就是urlopen,他是一个特殊的opener,
     39 可以理解成opener的一个特殊实例,传入的参数仅仅是url,data,timeout。
     40 '''
     41 
     42 
     43 def get_value(html,name,tag):
     44     '''
     45     获取once的值,每次都不一样
     46     '''
     47     soup = bs(html, 'html.parser')
     48     if name:
     49         value = soup.find(attrs={tag:name})
     50     else:
     51         value =soup.find(tag)
     52     return value
     53 
     54 
     55 def login():
     56     '''
     57     登录
     58     '''
     59     login_req = urllib2.Request(login_URL)
     60     html = opener.open(login_req).read()
     61     once_value = get_value(html,'once','name')['value']
     62 
     63     header ={
     64         'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36',
     65         "Host" : "www.v2ex.com",
     66         "Origin" : "http://www.v2ex.com",
     67         'Referer':'http://www.v2ex.com/signin'
     68     }
     69 
     70     post_info = {'u':user,'p':passwd,'once':once_value,'next':'/'}
     71     postdata = urllib.urlencode(post_info)
     72     req = urllib2.Request(login_URL,postdata,header)
     73     response = opener.open(req,timeout=10)
     74 #    print response.getcode()
     75 #    print response.read()
     76 
     77     if not 'A2' in [c.name for c in cookie]:
     78         raise ValueError,"登录失败!"
     79 
     80 
     81 def daily():
     82     '''
     83     每日登录奖励 
     84     '''
     85     daily_req = urllib2.Request(daily_URl)
     86     daily_page = opener.open(daily_req).read()
     87     day = re.findall(r"已连续登录s?(d+)s?天",daily_page)[0]
     88     info = get_value(daily_page,'fa fa-ok-sign','class')
     89     if info:
     90         print "%s每日登录奖励已经领取,已连续登录%s天" %(time,day)
     91     else:
     92         print "%s开始登录领取奖励....."% time
     93         onclick = get_value(daily_page,'super normal button','class')['onclick']
     94         href = onclick[onclick.find("'")+1:len(onclick)-2]
     95         full_url = 'http://www.v2ex.com'+href
     96         full_req = urllib2.Request(full_url)
     97         page = opener.open(full_req).read()
     98         success = get_value(daily_page,'icon-ok-sign','class')
     99         if success:
    100             day = int(day)
    101             day +=1
    102             print "%s签到成功!已成功领取每日奖励,已连续登录 %d 天" % (time,day)
    103             sys.exit(0)
    104         else:
    105             print "%s签到失败!" % time
    106 
    107 def balance():
    108     '''
    109     账户余额
    110 
    111     '''
    112     balance_req = urllib2.Request(balance_url)
    113     balance_page = opener.open(balance_req).read()
    114     soup = bs(html, 'html.parser')
    115 
    116 
    117 
    118 
    119 
    120 if __name__ == '__main__':
    121     login()
    122     daily()
    View Code

    然后丢到服务器上,因为v2ex每天早上8点签到时间重置,所以把crontab设置到八点十分。然后就等着收金币吧。O(∩_∩)O~~

    10 8 * * *  sudo python /mnt/v2ex.py >>/mnt/v2ex.log
  • 相关阅读:
    青山一别
    Spring Mvc Long类型精度丢失
    Spring 版MediatR--中介者模式实现库
    Spring 实现策略模式--自定义注解方式解耦if...else
    spring泛型注入
    Spring Boot Mvc 统一返回结果
    简化mapstruct代码: mapstruct-spring-plus
    .NET后端开发编码规范
    深度优先遍历(DFS)和广度优先遍历(BFS)的实现与简单应用
    将HTML字符串编译为虚拟DOM对象的基础实现
  • 原文地址:https://www.cnblogs.com/cornell/p/4623270.html
Copyright © 2011-2022 走看看