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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索