博客群发(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,一经查实,立即删除!

相关文章

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…

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

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

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

世界只有3.14 % 的人关注了青少年数学之旅(图源网络,侵权删)

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

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

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

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

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

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

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 问题背景: 初步了解Impala的应用重点测试Impala的查询速度是否真的如传说中的比Hive快3~30倍写作目的: 了解Impala的安装过程初步了解Impala的使用比较Impala与Hive的性能测试适合阅读对象: 想了解Impala安装的…

ASP.NET Core 中做集成测试的三种方案

学习进步老张的哲学不定期更新的日常在平时的开发中,我们很少会关注到测试的问题,更别说集成测试了,除非是公司有硬性要求或者是自己的开源项目中,为了整体架构的完整性,需要用测试来做辅助点缀,而更多的也…

爱泼斯坦事件发酵,MIT师生发起抗议逼迫校长Rafael Reif辞职

全世界只有3.14 %的人关注了青少年数学之旅爱泼斯坦自杀引发的美国学术界地震持续发酵,其中涉及最深的无疑是MIT。继MIT媒体实验室主任Joi Ito和计算机科学家Richard Stallman先后迫于压力辞职后,现任MIT校长Rafael Reif正面临越来越大的辞职压力。现年6…

java file_java开发之File类详细使用方法介绍

File类简介在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象。File 类定义了一些与平台无关的方法来操作文件,File类主要用来获取或处理与磁盘文件相关的信息,像文件名、 文件路径、访问权限和修改日期等,还可以浏览…

使用 Blazor 开发内部后台(二):了解 Blazor 组件

James: 转载技术社区中一位朋友最新的文章,介绍自己为公司的 WebForm 遗留系统使用 Blazor 重写前端 UI 的经历。什么是Blazor组件Blazor 应用是使用 Razor 组件构建的。组件是用户界面 (UI) 的自包含部分,具有用于启用动态行为的处理逻辑。组件可以嵌套…

Eclipse/Myeclipse生成serialVersionUID方法

serialVersionUID作用:   序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。 如果你修改代码重新部署后出现序列化错误,可以考虑给相应的类增加serialVersionUID字段。 一般来说有两种生成方式:  …

Framework 1.0/1.1中NotifyIcon的不足

.NET Framework 1.0/1.1中给我们提供了一个NotifyIcon类,使用这个类我们可以非常方便的实现系统托盘(SystemTray)图标。可是不知道微软是为了兼容性还是为了偷懒,只实现了NOTIFYICONDATA结构的v5.0之前版本,也就是说不支持5.0及以后的balloon…

一文读懂 .NET 中的高性能队列 Channel

介绍System.Threading.Channels 是.NET Core 3.0 后推出的新的集合类型, 具有异步API,高性能,线程安全等特点,它可以用来做消息队列,进行数据的生产和消费, 公开的 Writer 和 Reader api对应消息的生产者和消费者,也让Channel更加…

java字符数组初始化_Java 字符串(一)字符串初始化

一、String类概述1、概述java.lang.String类代表字符串。Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例。String 是引用数据类型,不是基本数据类型。类String 中包括用于检查各个字符串的方法,比如用于比较字符串&…