python 模拟登录豆瓣 并 发表动态

模拟登录这块一直没搞过,主要是对 模拟登陆的流程不太熟悉,网上找了好多资料,感觉熟悉个大概,就先用豆瓣 试试。

验证码这一块,现在主要是先把验证码的图片保存下来,手动输入验证码,后期研究下python自动识别验证码。

但是验证码保存成本地图片,看的不不太清楚(有时间在改下),可以把验证码的 url 地址在浏览器中打开,就可以看清楚验证码了。

主要实现 登录豆瓣,并发表一句话

# -*- coding:utf-8 -*-

import re
import requests
from bs4 import BeautifulSoup

class DouBan(object):
    def __init__(self):
        self.__username = "豆瓣帐号" # 豆瓣帐号
        self.__password = "豆瓣密码" # 豆瓣密码
        self.__main_url = "https://www.douban.com"
        self.__login_url = "https://www.douban.com/accounts/login"
        self.__proxies = {
            "http": "http://172.17.18.80:8080",
            "https": "https://172.17.18.80:8080"
        }
        self.__headers = {
            "Host": "www.douban.com",
            "Origin": self.__main_url,
            "Referer": self.__main_url,
            "Upgrade-Insecure-Requests": "1",
            "User-Agent": 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
        }
        self.__data = {
            "source": "index_nav",
            "redir": "https://www.douban.com",
            "form_email": self.__username,
            "form_password": self.__password,
            "login": u"登录"
        }

        self.__session = requests.session()
        self.__session.headers = self.__headers
        self.__session.proxies = self.__proxies
        pass

    def login(self):
        r = self.__session.post(self.__login_url, self.__data)
        if r.status_code == 200:
            html = r.content
            soup = BeautifulSoup(html, "lxml")
            captcha_address = soup.find('img', id='captcha_image')['src']
            print captcha_address
            # 验证码存在
            if captcha_address:
                # 利用正则表达式获取captcha的ID
                re_captcha_id = r'<input type="hidden" name="captcha-id" value="(.*?)"/'
                captcha_id = re.findall(re_captcha_id, html)
                print captcha_id
                # 保存到本地
                with open('captcha.jpg', 'w') as f:
                    f.write(requests.get(captcha_address, proxies=self.__proxies).content)
                captcha = raw_input('please input the captcha:')

                self.__data['captcha-solution'] = captcha
                self.__data['captcha-id'] = captcha_id
                r = self.__session.post(self.__login_url, data=self.__data)
                if r.status_code == 200:
                    print "login success"
                    data = {
                        "ck": "NBJ2",
                        "comment": "模拟登录"
                    }
                    r = self.__session.post(self.__main_url, data=data)
                    print r.status_code

            else:
                print "登录不需要验证码"
                # 不需要验证码的逻辑 和 上面输入验证码之后 的 逻辑 一样
                # 此处代码省略
        else:
            print "login fail", r.status_code
        pass

if __name__ == "__main__":
    t = DouBan()
    t.login()
    pass

登录豆瓣帐号,可以看到说了一句话 “模拟登录”

时间: 2024-10-13 16:10:22

python 模拟登录豆瓣 并 发表动态的相关文章

Python模拟登录12306的方法_python

本文实例讲述了Python模拟登录12306的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: #!/usr/bin/python # -*- coding: utf-8 -*-   import re; import sys; import cookielib; import urllib; import urllib2; import optparse; import json; import httplib2; reload(sys) sys.setdefaulten

Python 模拟登录知乎

前言 必备知识点 headers Referer User-Agent 隐藏域 其他 模拟登录 模拟防爬 服务器端 loginphp loginhtml 浏览器测试 正常提交用户名密码的话如下 用户名或者密码填写错误的情况如下 爬虫没有添加隐藏域时 添加了隐藏域的爬虫 知乎模拟登录 更新版知乎模拟登陆 代码部分 验证效果 总结 前言 前天看到一个爬取了知乎50多万评论的帖子, 羡慕的同时也想自己来尝试一下.看看能不能获取一些有价值的信息. 必备知识点 下面简单的来谈谈我对常见的防爬虫的一些技巧的

python模拟登录百度代码分享(获取百度贴吧等级)_python

复制代码 代码如下: # -*- coding: utf8 -*-'''Created on 2013-12-19 @author: good-temper''' import urllib2import urllibimport cookielibimport reimport bs4 URL_BAIDU_INDEX = u'http://www.baidu.com/';#https://passport.baidu.com/v2/api/?getapi&class=login&tpl=

python模拟登录百度贴吧(百度贴吧登录)实例_python

  复制代码 代码如下: # -*- coding:utf-8 -*-# python3.3.3 import sys,time,re,urllib.parse,urllib.request,http.cookiejar,random,math,os.path,hashlib,json,binascii,threading """cookie"""cookie=http.cookiejar.LWPCookieJar()#cookie.load('

python采用requests库模拟登录和抓取数据的简单示例_python

如果你还在为python的各种urllib和urlibs,cookielib 头疼,或者还还在为python模拟登录和抓取数据而抓狂,那么来看看我们推荐的requests,python采集数据模拟登录必备利器! 这也是python推荐的HTTP客户端库: 本文就以一个模拟登录的例子来加以说明,至于采集大家就请自行发挥吧. 代码很简单,主要是展现python的requests库的简单至极,代码如下: s = requests.session() data = {'user':'用户名','pass

使用Python中的cookielib模拟登录网站_python

前面简单提到了 Python 模拟登录的程序,但是没写清楚,这里再补上一个带注释的 Python 模拟登录的示例程序.简单说一下流程:先用cookielib获取cookie,再用获取到的cookie,进入需要登录的网站. # -*- coding: utf-8 -*- # !/usr/bin/python import urllib2 import urllib import cookielib import re auth_url = 'http://www.nowamagic.net/' h

xsrf-python 模拟登录知乎,登录不成功

问题描述 python 模拟登录知乎,登录不成功 import urllib2 import urllib import cookielib import ssl filename = 'cookie.txt' cookie = cookielib.MozillaCookieJar(filename) handler = urllib2.HTTPCookieProcessor(cookie) opener = urllib2.build_opener(handler) postData = ur

python-Python模拟登录问题,用Requsts实现

问题描述 Python模拟登录问题,用Requsts实现 一个输入用户名密码验证码的主页url1,一个验证码生成的url2,一个登录验证的url3,实现过程opener.open(urllib2.Request(url1)),opener.open(urllib2.Request(url2)),req=urllib2.Request(url3,data),opener.open(req),想改成requests 怎么写呀? 我的代码不对: s.requests.session() s.get(u

开发工具-curl 模拟登录网站,表单数据的填写问题

问题描述 curl 模拟登录网站,表单数据的填写问题 10C <form name=form1 method=post action=""/Control""><input type=""hidden"" name=""id"" value=""2000""><table border=""0&qu