开始用csdn的博客了

一直没有写博客的习惯,所以也就没有一种监督自己不断学习的东西,也不能很好的把自己学习的东西保存一下,所以要用的时候还是只有百度或者google!虽然很早就注册了csdn,但是也就是去下载下载什么冷门的软件什么的,不得不承认csdn上面确实有很多工具很不错啊!这几年也帮了我不少忙了!不多说了,直接开始吧!

最近一直在学习python,主要是前见天在学习post网页模拟之类的,发现python在做网络爬虫方面很在行!所以我就萌生了学习python的冲动!

快速地把基本语法了解之后,发现python的强大之处在于模块或者说类似于C/++中的库很丰富吧,在做数值计算(大数据)方面很有优势,这点来看有点像matlab啊!

好吧,学习了基本的语法之后就要开始看如何做post了,先用python做个登陆学校教务处的试一下。

说干就干~~~~~~~~~~~~

首先是各种网上找关于python post的东西,发现还挺多,不过都差不多,都是用cookierlib urllib urllib2来弄的

随便抄了些代码,终于可用了:

#!/usr/bin/env python
#-*-coding:utf-8-*-

import urllib
import urllib2
import cookielib

def bindCookie():
#获取Cookiejar对象(存在本机的cookie消息)
    cj = cookielib.CookieJar()
#自定义opener,并将opener跟CookieJar对象绑定
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
#安装opener,此后调用urlopen()时都会使用安装过的opener对象
    urllib2.install_opener(opener)
    return opener

url = "http://202.X.X.X:8080/login.aspx"
opener = bindCookie()

#print opener.open(url).read()
print 'x'

url="http://202.X.X.X:8080/_data/index_login.aspx"#


# 登陆用户名和密码
data={
    "__VIEWSTATE":"dDw1OTgzNjYzMjM7dDw7bDxpPDE+O2k8Mz47aTw1Pjs+O2w8dDxwPGw8VGV4dDs+O2w86YeN5bqG5aSn5a2mOz4+Ozs+O3Q8cDxsPFRleHQ7PjtsPFw8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCJcPgpcPCEtLQpmdW5jdGlvbiBvcGVuV2luTG9nKHRoZVVSTCx3LGgpewp2YXIgVGZvcm0scmV0U3RyXDsKZXZhbCgiVGZvcm09J3dpZHRoPSIrdysiLGhlaWdodD0iK2grIixzY3JvbGxiYXJzPW5vLHJlc2l6YWJsZT1ubyciKVw7CnBvcD13aW5kb3cub3Blbih0aGVVUkwsJ3dpbktQVCcsVGZvcm0pXDsgLy9wb3AubW92ZVRvKDAsNzUpXDsKZXZhbCgiVGZvcm09J2RpYWxvZ1dpZHRoOiIrdysicHhcO2RpYWxvZ0hlaWdodDoiK2grInB4XDtzdGF0dXM6bm9cO3Njcm9sbGJhcnM9bm9cO2hlbHA6bm8nIilcOwppZih0eXBlb2YocmV0U3RyKSE9J3VuZGVmaW5lZCcpIGFsZXJ0KHJldFN0cilcOwp9CmZ1bmN0aW9uIHNob3dMYXkoZGl2SWQpewp2YXIgb2JqRGl2ID0gZXZhbChkaXZJZClcOwppZiAob2JqRGl2LnN0eWxlLmRpc3BsYXk9PSJub25lIikKe29iakRpdi5zdHlsZS5kaXNwbGF5PSIiXDt9CmVsc2V7b2JqRGl2LnN0eWxlLmRpc3BsYXk9Im5vbmUiXDt9Cn0KZnVuY3Rpb24gc2VsVHllTmFtZSgpewogIGRvY3VtZW50LmFsbC50eXBlTmFtZS52YWx1ZT1kb2N1bWVudC5hbGwuU2VsX1R5cGUub3B0aW9uc1tkb2N1bWVudC5hbGwuU2VsX1R5cGUuc2VsZWN0ZWRJbmRleF0udGV4dFw7Cn0KZnVuY3Rpb24gd2luZG93Lm9ubG9hZCgpewoJdmFyIHNQQz13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCt3aW5kb3cubmF2aWdhdG9yLmNwdUNsYXNzK3dpbmRvdy5uYXZpZ2F0b3IuYXBwTWlub3JWZXJzaW9uKycgU046TlVMTCdcOwp0cnl7ZG9jdW1lbnQuYWxsLnBjSW5mby52YWx1ZT1zUENcO31jYXRjaChlcnIpe30KdHJ5e2RvY3VtZW50LmFsbC50eHRfZHNkc2RzZGpramtqYy5mb2N1cygpXDt9Y2F0Y2goZXJyKXt9CnRyeXtkb2N1bWVudC5hbGwudHlwZU5hbWUudmFsdWU9ZG9jdW1lbnQuYWxsLlNlbF9UeXBlLm9wdGlvbnNbZG9jdW1lbnQuYWxsLlNlbF9UeXBlLnNlbGVjdGVkSW5kZXhdLnRleHRcO31jYXRjaChlcnIpe30KfQpmdW5jdGlvbiBvcGVuV2luRGlhbG9nKHVybCxzY3IsdyxoKQp7CnZhciBUZm9ybVw7CmV2YWwoIlRmb3JtPSdkaWFsb2dXaWR0aDoiK3crInB4XDtkaWFsb2dIZWlnaHQ6IitoKyJweFw7c3RhdHVzOiIrc2NyKyJcO3Njcm9sbGJhcnM9bm9cO2hlbHA6bm8nIilcOwp3aW5kb3cuc2hvd01vZGFsRGlhbG9nKHVybCwxLFRmb3JtKVw7Cn0KZnVuY3Rpb24gb3Blbldpbih0aGVVUkwpewp2YXIgVGZvcm0sdyxoXDsKdHJ5ewoJdz13aW5kb3cuc2NyZWVuLndpZHRoLTEwXDsKfWNhdGNoKGUpe30KdHJ5ewpoPXdpbmRvdy5zY3JlZW4uaGVpZ2h0LTMwXDsKfWNhdGNoKGUpe30KdHJ5e2V2YWwoIlRmb3JtPSd3aWR0aD0iK3crIixoZWlnaHQ9IitoKyIsc2Nyb2xsYmFycz1ubyxzdGF0dXM9bm8scmVzaXphYmxlPXllcyciKVw7CnBvcD1wYXJlbnQud2luZG93Lm9wZW4odGhlVVJMLCcnLFRmb3JtKVw7CnBvcC5tb3ZlVG8oMCwwKVw7CnBhcmVudC5vcGVuZXI9bnVsbFw7CnBhcmVudC5jbG9zZSgpXDt9Y2F0Y2goZSl7fQp9CmZ1bmN0aW9uIGNoYW5nZVZhbGlkYXRlQ29kZShPYmopewp2YXIgZHQgPSBuZXcgRGF0ZSgpXDsKT2JqLnNyYz0iLi4vc3lzL1ZhbGlkYXRlQ29kZS5hc3B4P3Q9IitkdC5nZXRNaWxsaXNlY29uZHMoKVw7Cn0KXFwtLVw+Clw8L3NjcmlwdFw+Oz4+Ozs+O3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDA+Oz47bDx0PHA8bDxUZXh0Oz47bDxcPG9wdGlvbiB2YWx1ZT0nU1RVJyB1c3JJRD0n5a2m5Y+3J1w+5a2m55SfXDwvb3B0aW9uXD4KXDxvcHRpb24gdmFsdWU9J1RFQScgdXNySUQ9J+W4kOWPtydcPuaVmeW4iFw8L29wdGlvblw+Clw8b3B0aW9uIHZhbHVlPSdTWVMnIHVzcklEPSfluJDlj7cnXD7nrqHnkIbkurrlkZhcPC9vcHRpb25cPgpcPG9wdGlvbiB2YWx1ZT0nQURNJyB1c3JJRD0n5biQ5Y+3J1w+6Zeo5oi357u05oqk5ZGYXDwvb3B0aW9uXD4KOz4+Ozs+Oz4+Oz4+Oz4+Oz7p2B9lkx+Yq/jf62i+iqicmZx/xg==",
    "__VIEWSTATEGENERATOR":"CAA0A5A7",
    "txt_dsdfdfgfouyy":"111111",#密码 其实这儿的明文并没有什么用,最后的那个加密后的才有用
    "txt_dsdsdsdjkjkjc":"201XXXXX",#学号
    "txt_ysdsdsdskgf":"",
     "pcInfo":"",
"typeName":"",
"aerererdsdxcxdfgfg":"",
"Sel_Type":"STU",
"efdfdfuuyyuuckjg":"5FB44B4D01C2B77A955EA8CAB6EB1E",#加密后的密码校验值 MD5加密的
}


# urllib进行编码
post_data=urllib.urlencode(data)
# 发送头信息 要仿制就要仿制得像样子
headers ={
    "Host":"202.X.X.X:8080",
   "Referer": url,
    "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"

}

req=urllib2.Request(url,post_data)
req.add_header=headers
result = opener.open(req)
# 显示结果 试一下是否登陆成功了
url="http://202.X.X.X:8080/xsxj/Stu_MyInfo_RPT.aspx"
req.add_header=headers
print urllib2.urlopen(url).read()#其实我发现用opener.open(url)也可以,不知道有什么区别,希望有人可以解释一下,这些模块的帮助文档也不知道在哪儿去找
发现可以登陆成功!

但是有些网页就要出错,出一些我也看都不懂的东西,希望了解的人可以告知一下,再次不甚感激!


但是很快下一个问题又来了!

返回的结果居然汉字显示乱码,无语了!编码问题在python中怎么解决啊!只有问百度了!

看了下网页的源代码,在html开头写的是gb2312的编码,但是写的python文件头定义的是utf-8的编码,所以就把gb2312变成了utf-8来显示了,结果就乱码了吧!

经过不断的百度,终于还是找到了解决办法!不过这里问一下国内人气比较好的python交流社区有吗?有问题新手不知道怎么问啊!

先把连接贴出来

http://zhidao.baidu.com/link?url=X2SZNKmIUhH8LXzreyjrfxCdMnBqUbRGqjXyQlT4ibYbyLWoi4Lf1VgKGwNFHsXUlaKlMXtU2Gf2q1dKuVDlp4g1SKy-dZIO-mRahq00IBS

#!/usr/bin/env python
# -*- coding:utf8 -*-
 
import  urllib2
 
req  =  urllib2.Request( "http://www.baidu.com/" )
res  =  urllib2.urlopen(req)
html  =  res.read()
res.close()
 
html  =  unicode (html,  "gb2312" ).encode( "utf8" )#解决办法竟然就是这么简单,其实之前我就已经试过这种办法了,不过貌似出错了,奇怪
print  html
先不管了,至少现在编码的问题解决了!

现在正值换季,不幸患上了感冒,就只能先学到这儿了,后来再慢慢完善吧!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值