网站首页技术文章

python3模拟v2ex登录并自动领取每日奖励

发布时间:2017-08-18编辑:admin阅读(3)

    本文代码开源地址:https://github.com/vincenth520/Spider/tree/master/v2ex

    分析登录过程

    分析登录过程

    分析登录过程

    查看登录页面源代码

    查看登录页面源代码

    首先我们故意输错密码,查看登录需要发送的字段以及发送到的地址,可以发现用户名以及密码的字段其实是一大串随机字符,还有就是once字段是一个随机五位数字,所以我们需要在登录之前先去抓取登录页面获取到用户名密码字段名以及once随机数字

    引入依赖

    from urllib import request,parsefrom bs4 import BeautifulSoupimport http.cookiejar 
    import reimport configparser

    构建全局请求头

    def build_opener():
        cookie = http.cookiejar.CookieJar()
        cookie_processor = request.HTTPCookieProcessor(cookie)
        opener = request.build_opener(cookie_processor) 
        opener.addheaders = [("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0"),
        ("Referer", "http://cn.v2ex.com/signin"),
        ("Origin", "http://cn.v2ex.com"),
        ("Host", "cn.v2ex.com")]
        request.install_opener(opener)

    登录

    def login():
        login_data = configparser.ConfigParser()
        login_data.read("user.ini") #将用户名密码放在user.ini配置文件
    
        username = login_data.get("LoginInfo", "email")
        password = login_data.get("LoginInfo", "password")
        url = 'https://www.v2ex.com/signin'
        req = request.Request(url)
        res = request.urlopen(req)
        html = res.read().decode('gbk','ignore')  #获取到登录页的源代码并分析
        soup = BeautifulSoup(html, 'html.parser', from_encoding='utf-8')
        inputs = soup.find_all('input')    # 构造登录参数
        params = {
            inputs[1]["name"]: username,
            inputs[2]["name"]: password,
            inputs[3]["name"]: inputs[3]["value"],
            inputs[5]["name"]: inputs[5]["value"]
        }
        params = parse.urlencode(params).encode('utf-8')
    
        req = request.Request(url,params,method="POST") #将构造好的登录参数发送到登录地址
        res = request.urlopen(req)

    领取奖励

    def daily():
        url = 'https://www.v2ex.com/mission/daily' #领取奖励地址
        req = request.Request(url)
        res = request.urlopen(req)
        html = res.read().decode("utf-8")
        soup = BeautifulSoup(html, 'html.parser', from_encoding='utf-8') #获取领取奖励页面的代码
        inputs = soup.find_all('input')
    
        daily_link = 'https://www.v2ex.com' + re.search("location.href = '(.*)';", inputs[1]['onclick']).group(1) #查找点击领取的地址
        if daily_link == 'https://www.v2ex.com/balance':
            print('您今天已经领取了!')        return False
    
        req = request.Request(daily_link)
        res = request.urlopen(req)
    
        html = res.read().decode("utf-8")
    
        soup = BeautifulSoup(html, 'html.parser', from_encoding='utf-8')
        
        print(soup.find('div',class_="message").text)

    主函数

    if __name__ == '__main__':
        build_opener()
        login()
        daily()

    实例预览

    实例预览

    实例预览

    完整代码地址:https://github.com/vincenth520/Spider/tree/master/v2ex



    收录情况:百度未收录
    本文地址:http://luvial.cn/content/10077.html
    转载请保留原文地址!

    如果您觉得本文对您有帮助,且您有经济能力,欢迎捐助本站
标签: python3,模拟登陆 v2ex
上一篇:python3模拟知乎登录
下一篇:没有了