爬虫案例:自动登录抽屉新热榜
爬蟲案例:自動登錄抽屜新熱榜
?寫在前面
剛開始我以為抽屜是一個項目,就是類似于那種抽屜的效果,然后就在糾結還要不要學這個單元,因為我沒有現成的案例拿來用,如果要用的話還要自己寫很費時間,但是不想混過去,心里有個心事不舒服,就想去網上down一個,結果就找到了抽屜...
在對網站進行爬取的時候,一定要偽裝成瀏覽器!!!
在對網站進行爬取的時候,一定要偽裝成瀏覽器!!!
在對網站進行爬取的時候,一定要偽裝成瀏覽器!!!
https://dig.chouti.com/
?
?
編前思考
?1、首先我們要考慮抽屜網站是通過?form?還是?ajax?提交登錄的。
form :當點擊提交按鈕時頁面會全部刷新。
ajax:當點擊提交按鈕時頁面不會刷新。
OK,抽屜網站使用的是ajax提交,不會刷新。
?2、編寫代碼登錄抽屜官網
首先對網站提交進行分析。
?
?
# __author : "王佳偉" # date : 2019-01-16import requests# 提交的參數 post_data = {"phone": '86'+'15668318888','password': '123','oneMonth': 1 # 一個月內免登陸 }# 一定要添加瀏覽器,不然可能會遇到網絡防火墻 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:58.0) Gecko/20100101 Firefox/58.0'}response = requests.post(url='https://dig.chouti.com/login',# 偽裝成瀏覽器headers =headers,data=post_data, )print(response.text) # 獲取cookie cookie_dic = response.cookies.get_dict() print(cookie_dic)
? ···· 注意:注冊賬號,填寫正確的手機號和密碼會登陸成功!
?
?
?登錄抽屜,獲取設置頁
? 抽屜做了一件對于爬取的用戶來說很煩,但是對于網站的安全性來說確實很棒的一件事!!!
抽屜網比較特別,一般的網站在登陸的時候會返回一個cookies,以后再次登陸的時候只要帶著這個cookies去登陸就可以,但是抽屜網得特別之處在于登陸后返回給用戶得cookies是沒用得,這是抽屜網做出來混淆視聽得一種做法。
我們第一次打開抽屜網得時候,用get請求發送,這時候其實抽屜網會返回一個cookies。
import requests# 一定要添加瀏覽器,不然可能會遇到網絡防火墻 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:58.0) Gecko/20100101 Firefox/58.0'}r1 = requests.get(url='http://dig.chouti.com/',headers = headers ) # 獲取第一次進入主頁得到的cookie r1_cookie_dic = r1.cookies.get_dict() print(r1_cookie_dic)然后在此頁面進行登陸的時候,發送post請求,其實就是對get請求返回得cookies進行授權,登陸名和密碼登陸成功,也就是授權cookies,然后就可以用這個cookies進行自動登陸或者點贊設置等。
注意的是,發送post請求得時候其實也會返回一個cookies,但是這個cookies是無用得,所以正確得cookies應該是第一次拿到得cookies才可以正確登陸。但是大多數網站不是這樣的,只有抽屜是這樣!!
具體代碼
# __author : "王佳偉" # date : 2019-01-16import requests# 一定要添加瀏覽器,不然可能會遇到網絡防火墻 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:58.0) Gecko/20100101 Firefox/58.0'}# 第一次去抽屜拿到需要授權的cookies r1 = requests.get(url='http://dig.chouti.com/',headers=headers )# 獲取第一次進入主頁得到的cookie r1_cookie_dic = r1.cookies.get_dict() print(r1_cookie_dic)# 登錄的提交參數 post_data = {"phone": '86' + '你抽屜官網注冊的手機號','password': '你的抽屜官網密碼','oneMonth': 1 # 一個月內免登陸 }# 第二次登錄抽屜 response = requests.post(url='https://dig.chouti.com/login',# 為了模擬瀏覽器得行為,每次都要帶著請求頭去這樣這樣不會容易被發現是爬蟲。headers=headers,data=post_data,# 第二次登陸發送post請求時,應該將第一次得cookies帶過去授權,所以要帶著cookies。cookies=r1_cookie_dic ) print(response.text) # 獲取第二次登錄返回的cookie,盡管有返回,但是第二次返回的這個cookie沒有用 cookie_dic = response.cookies.get_dict() print(cookie_dic)# 進入個人設置頁面 response = requests.get(url='https://dig.chouti.com/profile',# 模擬瀏覽器headers=headers,# 提交cookie(一般網站使用下面這句代碼就行,抽屜不行)# cookies=cookie_dic,# 抽屜官網有點淘氣,陰了我們一下,將授權好的第一次的cookies帶進去訪問cookies={'gpsd': r1_cookie_dic.get('gpsd')} ) # 輸出返回的頁面 print(response.text)?
?
總結
以上是生活随笔為你收集整理的爬虫案例:自动登录抽屉新热榜的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kafka单节点创建 topic 超时
- 下一篇: 手机照片局部放大镜_iphone手机这5