Python爬虫实现自动登陆、签到功能 附代码


这篇文章主要介绍了Python爬虫实现自动登陆、签到功能的代码,本文经过图文并茂的形式给你们介绍的很是详细,对你们的学习或工做具备必定的参考借鉴价值,须要的朋友能够参考下javascript


       前几天在一个素材网站上下载东西,积分老是不够用,积分是怎么来的呢,是天天登陆网站签到得到的,固然也能购买,不想去买,由于偶尔才会用一次,可是每到用的时候就发现积分不够,又记不得天天去签到,因此就有了这个纠结的事情。怎么办呢,想办法呗,因而我就用python写了个小爬虫,天天去自动帮她签到挣积分。废话很少说,下面就讲讲代码。java

       我这里用的是python3.4,使用python2.x的朋友若是有须要请绕道查看别的文章。python

       工具:Fiddlerweb

       首先下载安装Fiddler,这个工具是用来监听网络请求,有助于你分析请求连接和参数。json

       打开目标网站:http://www.17sucai.com/,而后点击登陆浏览器

好了,先别急着登陆,打开你的Fiddler,此时Fiddler里面是没有监听到网络请求的,而后回到页面,输入邮箱和密码,点击登陆,下面再到fiddler里面去看微信

这里面的第一个请求就是你点击登陆的网络请求,点击这个连接能够在右边看到你的一些请求信息cookie

而后点击WebForms能够看到你的请求参数,也就是用户名和密码网络

下面咱们有代码来实现登陆功能app

   
  1. import urllib.request

  2. import urllib

  3. import gzip

  4. import http.cookiejar

  5. #定义一个方法用于生成请求头信息,处理cookie

  6. def getOpener(head):

  7. # deal with the Cookies

  8. <pre name="code" class="python"> cj = http.cookiejar.CookieJar()

  9. pro = urllib.request.HTTPCookieProcessor(cj)

  10. opener = urllib.request.build_opener(pro)

  11. header = []

  12. for key, value in head.items():

  13. elem = (key, value)

  14. header.append(elem)

  15. opener.addheaders = header

  16. return opener

  17. #定义一个方法来解压返回信息

  18. def ungzip(data):

  19. try: # 尝试解压

  20. print('正在解压.....')

  21. data = gzip.decompress(data)

  22. print('解压完毕!')

  23. except:

  24. print('未经压缩, 无需解压')

  25. return data

  26. #封装头信息,假装成浏览器

  27. header = {

  28. 'Connection': 'Keep-Alive',

  29. 'Accept-Language': 'zh-CN,zh;q=0.8',

  30. 'Accept': 'application/json, text/javascript, */*; q=0.01',

  31. 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',

  32. 'Accept-Encoding': 'gzip, deflate',

  33. 'X-Requested-With': 'XMLHttpRequest',

  34. 'Host': 'www.17sucai.com',

  35. }

  36. url = 'http://www.17sucai.com/auth'

  37. opener = getOpener(header)

  38. id = 'xxxxxxxxxxxxx'#你的用户名

  39. password = 'xxxxxxx'#你的密码

  40. postDict = {

  41. 'email': id,

  42. 'password': password,

  43. }

  44. postData = urllib.parse.urlencode(postDict).encode()

  45. op = opener.open(url, postData)

  46. data = op.read()

  47. data = ungzip(data)

  48. print(data)

好了,接下来清空一下你的Fiddler,而后运行这个程序,看一下你的Fiddler

你能够点击这个连接,看看右边的请求信息和你用浏览器请求的是否是同样

下面是程序后代打印的信息

code=200表示登录成功

code=200表示登录成功

解析来就须要获取到签到的url,这里你须要一个没有签到的帐号在网站中点击签到按钮,而后经过Fiddler来获取到签到的连接和须要的信息。

而后点击“签到”,签到成功后到Fiddler中查看捕捉到的url

点击这个url能够在右边查看访问这个连接时所须要的头信息和cookies神马的,咱们已经登陆成功后直接使用cookies就好了,python对cookies的处理作好了封装,下面是个人代码中对cookies的使用

   
  1. cj = http.cookiejar.CookieJar()

  2. pro = urllib.request.HTTPCookieProcessor(cj)

  3. opener = urllib.request.build_opener(pro)

下面是签到成功返回的信息:code=200表示请求成功,day=1表示连续签到一天,score=20表示得到的积分数

下面放出完整代码,固然,为了测试代码签到,你还须要你一没有签到过的帐号

   
  1. import urllib.request

  2. import urllib

  3. import gzip

  4. import http.cookiejar

  5. def getOpener(head):

  6. # deal with the Cookies

  7. cj = http.cookiejar.CookieJar()

  8. pro = urllib.request.HTTPCookieProcessor(cj)

  9. opener = urllib.request.build_opener(pro)

  10. header = []

  11. for key, value in head.items():

  12. elem = (key, value)

  13. header.append(elem)

  14. opener.addheaders = header

  15. return opener

  16. def ungzip(data):

  17. try: # 尝试解压

  18. print('正在解压.....')

  19. data = gzip.decompress(data)

  20. print('解压完毕!')

  21. except:

  22. print('未经压缩, 无需解压')

  23. return data

  24. header = {

  25. 'Connection': 'Keep-Alive',

  26. 'Accept-Language': 'zh-CN,zh;q=0.8',

  27. 'Accept': 'application/json, text/javascript, */*; q=0.01',

  28. 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',

  29. 'Accept-Encoding': 'gzip, deflate',

  30. 'X-Requested-With': 'XMLHttpRequest',

  31. 'Host': 'www.17sucai.com',

  32. }

  33. url = 'http://www.17sucai.com/auth'

  34. opener = getOpener(header)

  35. id = 'xxxxxxx'

  36. password = 'xxxxxxx'

  37. postDict = {

  38. 'email': id,

  39. 'password': password,

  40. }

  41. postData = urllib.parse.urlencode(postDict).encode()

  42. op = opener.open(url, postData)

  43. data = op.read()

  44. data = ungzip(data)

  45. print(data)

  46. url = 'http://www.17sucai.com/member/signin' #签到的地址

  47. op = opener.open(url)

  48. data = op.read()

  49. data = ungzip(data)

  50. print(data)

相比登陆,签到也就是在登陆完成后从新打开一个连接而已,因为个人帐号都已经签到过了,这里就不在贴运行代码的图 了。

接下来要作的就是在你电脑上写个bat 脚本,再在“任务计划”中添加一个定时任务就好了。

在此以前你还须要配置一下python的环境变量,这里就不在赘述了。

到此这篇关于Python爬虫实现自动登陆、签到功能的代码的文章就介绍到这了

------------------- End -------------------

扫下方二维码加老师微信或是搜索老师微信号:XTUOL1988【备注学习Python】领取Python web开发,Python爬虫,Python数据分析,人工智能等学习教程。带你从零基础系统性的学好Python!也能够加老师建的Python技术学习教程qq裙:245345507两者加一个就能够!

欢迎你们点赞,留言,转发,转载,感谢你们的相伴与支持

万水千山老是情,点个【在看】行不行

*声明:本文于网络整理,版权归原做者全部,如来源信息有误或侵犯权益,请联系咱们删除或受权事宜。

/今日留言主题/

随便说一两句吧~


本文分享自微信公众号 - python教程(pythonjc)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索