python爬带用户名密码的网页_【20171104早】python爬虫之username,password登陆

工欲善其事,必先利其器。网站只能通过交互式登陆吗?当然不是,作为网络蛮荒世界的一个剑客,老黑欲练就自由之剑,呵呵,就是用代码编写可以自动登陆系统的工具,从而获取想要的数据。

简单版:

样板网站:

成绩系统:http://jwc.ecjtu.jx.cn/mis_o/login.htm

账号:jwc

密码:jwc

Now! Let's go! go ! go!

s1:获取实际登陆的url,老黑使用了firefox,live http headers工具,填入账号密码后,获取到实际登陆的url为http://jwc.ecjtu.jx.cn/mis_o/login.php,post信息为: user=jwc&pass=jwc&Submit=%CC%E1%BD%BB

s2:编写python代码模拟登陆,使用到了python中requests

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

2 importsys3 importrequests4 reload(sys)5 sys.setdefaultencoding('utf8')6

7 url = 'http://jwc.ecjtu.jx.cn/mis_o/login.php'

8 #1: get 2: post

9 option = '2'

10 if option == '1':11 url = 'http://www.kfzhongzhou.com/cyjb_xx.asp?id=15'

12

13 output_file = open('D:\codehub\output.html', 'w')14 datas = {'user': 'jwc',15 'pass': 'jwc',16 'Submit': '%CC%E1%BD%BB'

17 }18 headers = {'Referer': 'http://jwc.ecjtu.jx.cn/mis_o/login.php',19 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36'

20 '(KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',21 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',22 'Accept-Language': 'zh-CN,zh;q=0.8',23 }24 if __name__ == '__main__':25 print '开始!'

26 responses =None27 sessions =requests.session()28 if option == '1':29 responses =sessions.get(url)30 else:31 responses = sessions.post(url, headers=headers, data=datas)32 printresponses.headers33 printresponses.status_code34

35 r2 = sessions.get('http://jwc.ecjtu.jx.cn/mis_o/main.php')36 context =r2.text37 output_file.write(context)38 print '结束!'

39 output_file.close()

解释:构造sessions进行登陆,保证可以下载正常登陆后才能访问道的main.php页面,进行验证是否登陆成功。

s3:效果,main.php内容被写在本地文件output.html中,用firefox打开后是如下效果

因为这个系统编码的问题导致写入output.html中的内容是乱码,对比一下正常登陆的页面,可以看出是登陆成功了。

扩展:优化后可以使用cookie进行登陆,参考文章 地址

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值