博客群发(2)--实现登陆

模板方法

python也是一种面向对象的语言,所以在实现群发的时候,会登陆不同的网站,但是登陆的方法什么的不尽相同,所以这里想到的是模板方法。

模板方法模式:

应用特性:重复做相同逻辑的事情,但是具体细节不同的场景

结构特性:相同逻辑抽取至父类,具体细节留置子类。可以说是对逻辑的抽象

看一下代码:

#!/usr/bin/env python  
#encoding: utf-8  class template:def __init__(self):passdef logic(self):print 'do something before ....'print self.do_something_now()print 'do something after ....'def do_something_now(self):return None      class apply_temp1(template):def __init__(self):passdef do_something_now(self):return 'apply 1'  class apply_temp2(template):def __init__(self):passdef do_something_now(self):return 'apply 2'  if '__main__' == __name__:  obj1 = apply_temp1()obj2 = apply_temp2()obj1.logic()obj2.logic()print obj1.__class__print obj2.__class__

得到结果如下:

image

然后看一下类图:

模板

是不是很简单。

baidu登陆流程

想实现登陆baidu,使用firefox查看,可以看到如下图:

image

baidu HI登陆

baidu HI登陆源代码

# _*_ coding:utf-8 _*_
# name login_baidu.py
import urllib,urllib2,httplib,cookielib
def auto_login_hi(url,name,pwd):url_hi="http://passport.baidu.com/?login"#设置cookiecookie=cookielib.CookieJar()cj=urllib2.HTTPCookieProcessor(cookie)#设置登录参数postdata=urllib.urlencode({'username':name,'password':pwd})#生成请求request=urllib2.Request(url_hi,postdata)#登录百度opener=urllib2.build_opener(cj)f=opener.open(request)if(200==f.getcode()):print "登陆成功!"else:print "登录失败!"#print f.getcode()#打开百度HI空间页面hi_html=opener.open(url)return hi_html
if __name__=='__main__':name='用户名'password='密码'url='http://hi.baidu.com/ewayfly'h=auto_login_hi(url,name,password)print h.read()

登陆博客园

登录博客园的代码:
# _*_ coding:utf-8 _*_
import urllib,urllib2,httplib,cookielib
def auto_login_cnblogs(url,name,pwd):url_hi="http://passport.cnblogs.com/login.aspx?ReturnUrl=http%3A%2F%2Fwww.cnblogs.com%2F"#设置cookiecookie=cookielib.CookieJar()cj=urllib2.HTTPCookieProcessor(cookie)#设置登录参数postdata=urllib.urlencode({'username':name,'password':pwd})#生成请求request=urllib2.Request(url_hi,postdata)#登录百度opener=urllib2.build_opener(cj)f=opener.open(request)if(200==f.getcode()):print "登陆成功!"else:print "登录失败!"#print f.getcode()hi_html=opener.open(url)return hi_html
if __name__=='__main__':name='用户名'password='密码'url='http://www.cnblogs.com/skyme/'h=auto_login_cnblogs(url,name,password)print h.read()

登陆51CTO

登陆51CTO:

#coding:UTF-8
import urllib,urllib2,cookielib,re,random
class Login:_login_url = 'http://home.51cto.com/index.php?s=/Index/doLogin'_method = 'post'#email 51cto登录用户名或邮箱#passwd 51cto登录密码_login_data = {'email':'用户名',\'passwd':'密码',\}_headers = [('host','home.51cto.com'),\('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2'),\('Referer','http://home.51cto.com/index.php?s=/Index/index/reback/http%253A%252F%252Fwww.51cto.com%252F/')\]_data = {'cookie_file_path':'./51cto_cookies.dat'}_re = r'src="(.+?)"'_version = '0.1'_connect_info = {}def __init__(self):self._connect_info['cookie'] = cookielib.LWPCookieJar()try:self._connect_info['cookie'].revert(self._data['cookie_file_path'])except Exception,e:             print eself._connect_info['cookie_processor'] = urllib2.HTTPCookieProcessor(self._connect_info['cookie'])self._connect_info['post_data'] = urllib.urlencode(self._login_data)def open(self):opener = urllib2.build_opener(self._connect_info['cookie_processor'])opener.addheaders = self._headersurllib2.install_opener(opener)#opener.open(request)request = urllib2.Request(self._login_url,self._connect_info['post_data'])conn = opener.open(request)if(conn.geturl() == self._login_url):self._connect_info['cookie'].save(self._data['cookie_file_path'])else:pass#根据js中的链接连接登录partner = re.compile(self._re)match = partner.findall(conn.read())for item in match:opener.open(item)#登录成功开始领豆url = 'http://down.51cto.com/download.php'data = {'do':'getfreecredits','t':random.random()}login51cto = opener.open(url, urllib.urlencode(data))print login51cto.getcode()#html = opener.open('http://down.51cto.com/')#领无忧币url = 'http://home.51cto.com/index.php?s=/Home/toSign'data = {'s':''}loginwuyou = opener.open(url, urllib.urlencode(data))print loginwuyou.getcode()
if __name__ == '__main__':login_51cto = Login()login_51cto.open()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

晦气

昨天晚上在工行ATM机器上取钱,结果回去一看一张票子及其像假币,虽然是刚从取款机里面去的,但就算是真的,估计也很难用出去吧,唉,只有自认倒霉了! 转载于:https://www.cnblogs.com/BlueMagic/arc…

flask取mysql数据很慢_[flask 优化] 由flask-bootstrap,flask-moment引起的访问速度慢的原因及解决办法...

一周时间快速阅读了400页的《javascript基础教程》,理解了主要概念。解决了一个很久之前的疑问。我的网站是使用flask框架搭建的,介绍flask web的一本著名的书(之前提到过)作者搭建个人博客时,向读者推荐了flask-bootstrap,flask_moment这两个…

运维管理工具-- Deploy Assistant

Deploy Assistant 好用的运维管理工具,目前只支持了docker,后续会继续开发手机端,以及其他的功能,如k8s,mysql,redis等。系统采用ssh登录Linux系统,调用docker api的模式开发,支持账号密码,证书登录 支持do…

空调冷冻水系统控制

空调冷冻水系统控制 张红霞 摘要:通过某大厦空调冷冻水系统控制的介绍,表明只有在空调设计人员提供了准确的控制、测量 参数的基础下,才能实现冷水机组自动控制的目的,满足空调的设计要求。 Control of Refrigerating Water Syste…

用Python进行数据探索,探索竞赛优胜方案

全世界只有3.14 %的人关注了青少年数学之旅AI这个词相信大家都非常熟悉,近几年来人工智能圈子格外热闹,光是AlphoGo就让大家对它刮目相看。随着大数据时代信息科技的快速发展,各种各样的数据充斥着我们的生活。而我们又当如何有效利用数据&am…

ubuntu安装phpmyadmin

sudo apt-get install phpmyadmin 这里的phpmyadmin是与我们之前装的php5 是相配合的,如果你装的PHP 和phpmyadmin不相配,它们不会工作。 Step 1.现在我们去解决phpmyadmin“不工作”的问题,当我们安装了phpmyadmin 后,不要以为一…

微结构设计能力看国产CPU发展

当下,国内CPU公司可以大致分为泾渭分明的两条技术路线,分别是自主研发路线和技术引进路线,从实践上看,自主CPU架构改进能力和IPC提升能力要明显优于技术引进CPU,在研发上更具发展后劲。 FT CPU IPC进步相对有限2013年的…

做主管常犯的毛病毛病六:忘了公司的命脉:利润(转)

毛病六:忘了公司的命脉:利润我们都晓得中国在改革开放以后,整个国家迈进市场经济。现在这个话大家都在讲,其实我们稍微客观点观察,就知道我们国家,还没有真正的达到市场经济。我们承不承认,整个…

日历控件

用法如下&#xff1a; 在.aspx.cs为控件添加属性&#xff1a; ibSelDate1.Attributes.Add("onclick", "GetDate1()"); 在.aspx页面调用js文件&#xff1a; <script language"javascript" src"ClientCalendar.js"></script>…

mysql环境搭载后老出错_使用Docker在window10下搭建SWOFT开发环境,mysql连接错误

使用Docker在window10下搭建SWOFT开发环境&#xff0c;mysql连接错误{"code": 0,"error": "(Swoft\\Db\\Exception\\DbException) Pool error is Create connection error(Dsn(mysql:dbnametest;host127.0.0.1:13306) can not to connected!) file(/v…

看到这块Google的“墓地”,心中作何感想?| 今日最佳

世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源网络&#xff0c;侵权删&#xff09;

深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法

当我们用javascript写ajax程序写得很“开心”的时候&#xff0c;突然有人告诉你有一种东西叫jquery&#xff0c;它会告诉你不直接和HttpRequest是多么的快乐&#xff0c;同时你再也不需要再烦恼纠结的ajax乱码问题&#xff0c;更幸福的是你的js代码将大大地简化&#xff0c;看完…

轻松实现突破网管限制(SoftEther实际应用)

因为公司限制办公室里的机器上网&#xff0c;只能使用一台内网的HTTP代理服务器浏览网站&#xff0c;而且还只能浏览端口为80的网站&#xff0c;想在天空软件站下个软件还只能通过四川的一个服务器下载。实在很郁闷。找了几天的代理工具。先后用过了“通通通”和“SocksOnline”…

看完这些,孩子的学习效率提高10倍

全世界只有3.14 % 的人关注了青少年数学之旅在工作之余&#xff0c;我们大量的碎片时间被手机占据。无意识的刷手机打发无聊&#xff0c;不如有趣又高品质的积累。我们特意精选了在不同领域的几个高品质公众号代表&#xff0c;希望让你在快乐打发闲暇时光的同时&#xff0c;也能…

中国唯一一位女性 Apache Member 潘娟:我们还是要走出自己与众不同的 My Way

The Apache Way 是一种参照&#xff0c;但我们还是要走出自己的与众不同的 My Way。———潘娟ApacheCon 是 Apache 软件基金会&#xff08;ASF&#xff09;的官方全球系列大会。作为久负盛名的开源盛宴&#xff0c;ApacheCon 在开源界备受关注&#xff0c;也是开源运动早期的知…

SVN的安装笔记和要注意的问题

SVN的安装笔记和要注意的问题 之前装的SVN 1.3.2,按网上说的教程,一配置就可以用了,但这次换了1.4.2的最新版本,只是设置了server.conf和passwd后,依然在导入项目时,说验证错误,搞来搞去还是有问题,最后发现一定要在auth这个文件设置好权限才行.简单的安装过程:1 下载好,比如在…

python seaborn 热图_python – 在seaborn中结合两张热图

在图中并排显示两个seaborn热图的一种可能方式是将它们绘制成单独的子图.可以将子图之间的空间设置为非常小(wspace 0.01),并将相应的颜色条和标记标记定位在该间隙之外.import matplotlib.pyplot as pltimport numpy as npimport pandas as pdimport seaborn as snsdf pd.Da…

Impala入门笔记

From:http://tech.uc.cn/?p817 问题背景&#xff1a; 初步了解Impala的应用重点测试Impala的查询速度是否真的如传说中的比Hive快3~30倍写作目的&#xff1a; 了解Impala的安装过程初步了解Impala的使用比较Impala与Hive的性能测试适合阅读对象&#xff1a; 想了解Impala安装的…

关于使用 jquery Validate 使用出现的问题

今天写一个表单提交程序&#xff0c;发现jquery的Validate这个官方插件很好用&#xff0c;决定使用。下载之后运行它的Demo没有问题。但是在项目中使用时却出现错误&#xff0c;提示正则表达式错误&#xff0c;查看了一下源程序&#xff0c;发现在检测URL那个方法的代码里有一段…