http://blog.csdn.net/kingsonchen/article/details/8499795
使用有线电视宽带时,会分配到帐号和密码,每次上网时,会自动跳转到登录网页,手动输入了用户和密码登录后才可以上网。每天都得重复相同的动作,不免让人厌烦,于是用python写了个登录脚本,每次上网,只需要双击运行下即可,好不方便。
代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Created on 2012-05-10
Last updated on 2012-05-10
Version: V1.0
@author: Kingson
Email:kingson_chen@hotmail.com
Copyright.All Rights Reserve
python运行版本:V2.7.2
本程序是用于登录电视宽带使用。
'''
import time #引入时间模块,用于处理进程睡眠
import datetime #引入日期时间模块
import httplib #引入httplib
import urllib #引入urllib
import urllib2 #引入urllib2模块,用于处理http请求,urllib2是httplib的增强版
import cookielib #引入处理httpcookie的模块
import sys,os #引入操作系统模块
import re #引入正则表达式模块
import random #引入随机数模块
import codecs #引入编解码模块
_username="c123456"
_password="abc123test"
_submitValue="登录 Login"
_loginURL="http://10.160.255.101/"
print "--------------------------------------------------------------------------"
print u"---------------------------- 开始有线通宽带登录 ------------------------"
print "--------------------------------------------------------------------------"
#写日志
def writelog(log_text):
try:
str_date=datetime.datetime.now().strftime('%Y-%m-%d') #当前时间格式化日期字符串,只输出年月日,strftime('%Y%m%d%H%M%S')可以输出时间
file_handle = codecs.open('log-'+str_date+'.txt', 'a','utf-8') #以追加尾部模式打开日志文件,codecs.open()可以设置文件的编码
file_handle.write(log_text+"\r\n") #写入内容,\r\n中windows下的回车符
file_handle.close() #关闭文件句柄
except Exception,ex:
print Exception,":",ex
writelog("Exception:"+str(ex)+"\r\n")
if __name__ == '__main__':
try:
cookie_support= urllib2.HTTPCookieProcessor(cookielib.CookieJar())
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
content = urllib2.urlopen(_loginURL).read()
print u"---------------------------- 打开登录界面 start ------------------------------"
print content
print u"---------------------------- 打开登录界面 end ------------------------------\r\n"
postdata=urllib.urlencode({
'DDDDD':_username,
'upass':_password,
'0MKKey':_submitValue})
headers = {"Accept":"text/html, application/xhtml+xml, */*","Referer":"http://10.160.255.101/","Accept-Language": "zh-cn","Content-Type": "application/x-www-form-urlencoded","Accept-Encoding":"gzip, deflate","User-Agent": "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)", "Host": "10.160.255.101", "Connection": "Keep-Alive", "Cache-Control": "no-cache" }
print u"---------------------------- 提交登录信息 start ------------------------------"
print u"提交地址:"+_loginURL
print u"提交数据:"+postdata
req = urllib2.Request(url=_loginURL,data=postdata,headers=headers)
print u"---------------------------- 提交登录信息 end ------------------------------\r\n"
result = urllib2.urlopen(req).read()
print u"---------------------------- 结果值如下: ----------------------------------\r\n"
print result
except Exception,ex:
print Exception,":",ex #打印出异常消息
writelog("Exception:"+str(ex)+"\r\n")
print "--------------------------------------------------------------------------"
print u"---------------------------- 结束有线通宽带登录 ------------------------"
print "--------------------------------------------------------------------------"
time.sleep(86400) #进程睡眠24小时,没有这句爬取完就会自动关闭窗口