python 模擬豆瓣登入(豆瓣6.0)
最近在學習python爬蟲,看到網上有很多關於模擬豆瓣登入的例子,隨意找了一個試了下,發現不能執行,對比了一下程式碼和豆瓣網站,發現原來是豆瓣網站做了修改,增加了反爬措施。
首先看下要模擬登入的網站:
開啟開發者模式:
在賬號和密碼隨意填入資料 :
發現會發送一個post請求:
ur是:https://accounts.douban.com/j/mobile/login/basic
資料格式是:
於是可以來編寫程式碼:
import requests def main(): url_basic = 'https://accounts.douban.com/j/mobile/login/basic' url = 'https://www.douban.com/' ua_headers = { "User-Agent":'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'} data = { 'ck': '', 'name': '自己的賬號', 'password': '自己的密碼', 'remember': 'false', 'ticket': '' } s = requests.session() s.post(url=url_basic, headers=ua_headers, data=data) response = s.get(url=url, headers=ua_headers) with open('douban.html' , 'wb') as f: f.write(response.content) if __name__ == '__main__': main()
第一步:
建立 s = requests.session()
作用是跨請求保持引數,也就是說s這個session物件所發出的所有請求之間會保持cookies
第二步:
用建立好的session物件攜帶賬號,密碼去傳送post請求。
由於改版後的豆瓣返回的是一個josn資料,而不是像以前一樣重定向,所以需要我們來重定向。
第三步:
攜帶登入成功儲存的cookie去訪問首頁,就會得到你自己的首頁.
最後得到個人首頁: