以登陆wordpress为例,
如何获取Cookies,登陆之后开发者模式,找到请求的页面寻找Cookies,这里要注意需要把Cookie转换成python 字典(dict)形式。
传送门网址:Cookie信息转化为字典格式
cookies = { "wordpress_sec_62da0086f543a3a2b2b9ca0c70aae035":"cchheenn%7C1576931392%7CbOcb6q9CXccQ1ipajxhhVu54AbmUmR2vnbXqoZ9R1Fd%7C320b527e6e0c37c0e495c53016eb01f28ff4db7b261e1d7007f02c9711e28cec", "wordpress_test_cookie":"WP+Cookie+check", "Hm_lvt_6adb2361f32aa1257d3414a5f434be80":"1576753871", "wordpress_logged_in_62da0086f543a3a2b2b9ca0c70aae035":"cchheenn%7C1576931392%7CbOcb6q9CXccQ1ipajxhhVu54AbmUmR2vnbXqoZ9R1Fd%7C72676d10a686cf34a01ec0c0c40ee7e489ce3341df3eb6bf37fbad0593dd0b5e", "wp-settings-time-1":"1576758617", "wp-settings-1":"mfold%3Do%26editor%3Dtinymce%26libraryContent%3Dbrowse%26hidetb%3D1%26post_dfw%3Doff%26urlbutton%3Dnone%26advImgDetails%3Dshow%26imgsize%3Dfull%26editor_expand%3Doff%26ed_size%3D868%26widgets_access%3Doff" } # 构造表单数据 yield scrapy.FormRequest("https://cchheenn.com/wp-login.php", cookies=cookies, callback=self.after_login)#回调 def after_login(self,response): yield scrapy.Request("https://cchheenn.com/wp-admin/index.php",callback=self.index_home)#请求已登陆的首页,并回调 def index_home(self,response): print(response.text)#打印页面内容,如果和成功登陆以后的一样,则登陆成功。
总结一下,使用Cookie登录的好处:
不需要知道登录url和表单字段以及其他参数,不需要了解登录的过程和细节。由于不是采用登录url, 用户名+密码的方式。配合工具使用,快速方便。
所谓用Cookie实现登录,就把过登录过的信息(包括用户名、密码以及其他的验证信息)打包一起发给服务器,告诉服务器我是登录验证过的。
不足之处,Cookie有过期时间,过一段时间再运行这个爬虫,需要重新获取一下Cookie的值。