登錄的實質就是朝着服務器發送含有登錄表單數據的HTTP請求(通常都是POST)。
scrapy提供了一個FormRequest類,是Request的子類,專門用來構造含有表單數據的請求,FormRequest的構造器方法有一個formdata參數,接受字典形式的表單數據。
在spider中使用FormRequest的流程:
- 覆寫基類的start_requests方法,最先請求登錄頁面
- login方法是登錄頁面的解析函數,在該方法中進行模擬登錄,構造表單請求並進行提交
- parse_login方法是表單請求的響應處理函數,在該方法中通過在用頁面查找特殊字符來判斷是否登錄成功了,如果成功就調用基類中的start_requests方法,繼續爬取start_urls中的頁面