爬蟲入門,模擬登入,動態token,攜帶cookie,密文加密,登入拉勾網,簡單爬蟲案例
阿新 • • 發佈:2018-12-16
import requests import re #匯入相應的庫檔案 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3573.0 Safari/537.36' } #加入請求頭 url = 'https://passport.lagou.com/login/login.html' #從官網找到登入介面的url r1 = requests.get('https://passport.lagou.com/login/login.html',headers=headers) #登入介面上HTML的資訊,得到這個網站,有動態的token驗證 X_Anti_Forge_Token = re.findall("X_Anti_Forge_Token = '(.*?)'",r1.text,re.S)[0] X_Anti_Forge_Code = re.findall("X_Anti_Forge_Code = '(.*?)'",r1.text,re.S)[0] #使用正則表示式得到動態的token的值 r2 = requests.post( #第二次訪問,使用post方法,提交具體資訊 url = 'https://passport.lagou.com/login/login.json', #這個網址是提交具體資訊的網址 headers = { #新增請求頭 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3573.0 Safari/537.36', #新增裝置請求頭 'X-Anit-Forge-Code': X_Anti_Forge_Code, 'X-Anit-Forge-Token': X_Anti_Forge_Token, #新增第一次得到的動態token的值 'Referer': 'https://passport.lagou.com/login/login.html', #上一次請求的地址,可以理解為從哪裡找到登入資料的 'X-Requested-With': "XMLHttpRequest" #新增網站框架 }, data ={ #新增具體的提交資訊,網站是使用form Data,提交的,是一個字典格式 "isValidate": True, #IS驗證 "username": '你的使用者名稱', "password": '你的密碼', #密碼,有個問題這個網站的密碼是有加密的,需要解密或者直接使用密文密碼 "request_form_verifyCode": '', #請求程式碼格式程式碼 "submit":'', #點選登入,提交資訊 "challenge": '' #多次懷疑問題,其實我也是不知道什麼意思,應該是多次驗證,反正不知道什麼意思都帶著 }, cookies = r1.cookies.get_dict() #還要帶著從第一次請求網站得到的cookie值 ) print(r2.text) #列印第二次網址