知乎登录逻辑
1.创建spider脚本:
使用命令以base为模版创建一个spider文件
>>>scrapy genspider zhihu www.zhihu.com
2.重写start_requests:
start_requests方法是spider处理start_urls的入口,即处理start_urls的第一个方法,我们让他访问页面,并回调到下一个函数login处理登录过程:
![](https://img.haomeiwen.com/i1878029/42c2af87d021c723.png)
3.处理登录过程:
在方法start_requests的回调方法login中,使用FormRequest类传入参数模拟浏览器的POST访问:
![](https://img.haomeiwen.com/i1878029/b6a4f7e47516c8dc.png)
当然我们也可以给login添加一个回调方法用于验证登录是否成功:
![](https://img.haomeiwen.com/i1878029/fb53cc5265c2109f.png)
当然,我们不要忘了重写start_requests后,他最终处理URL的执行结果必须和源码保持一致
![](https://img.haomeiwen.com/i1878029/59845b2b7c8f215a.png)
![](https://img.haomeiwen.com/i1878029/402f9d79b1c1c44e.png)
当然,查看make_requests_from_url方法的源码后,我们发现也可以这样重写最后一步
![](https://img.haomeiwen.com/i1878029/2377dbb860ead833.png)
重写check_login,这样写就可以给Request添加一些参数,例如headers
![](https://img.haomeiwen.com/i1878029/9eb89db1ddca0dcb.png)
配置DOWNLOADER_MIDDLEWARES
打开settings.py,找到已被注释掉的downloader_middlewares:
![](https://img.haomeiwen.com/i1878029/dfcd00ef84cf7f24.png)
设置User-Agent:
使用scrapy的downloader_middlewares自带的组件可以完成配置,源码如下:
![](https://img.haomeiwen.com/i1878029/6f02790f75e15fc6.png)
源码的方法会将每一个爬虫的user-agent值替换成settings.py中设置的USER_AGENT值,我们打开settings.py并添加USER_AGENT值,然后将对应的类权限先设为None,然后重写它。
![](https://img.haomeiwen.com/i1878029/e8a70d9db336a3a1.png)
之后,我们在middlewares中创建一个类:
![](https://img.haomeiwen.com/i1878029/036d1a590e260cde.png)
网友评论