题目:
技术难点: 这个题目的难点在于,你登录跟没有登录,获取到的数据是不一样的,之前爬取其他题目的时候,发现结果怎么也不对,后来通过下载的html分析,才发现,原来自己爬取到的数据,是未登录的数据。
解题方法: 登录信息,直接headers添加cookies, 或者自己重新通过他们的登录平台先登录,获取信息后再添加proxy,然后再爬取。
方法一:selenium的运用(速度慢)
- 创建 webdriver.ChromeOptions(),给他添加proxy参数,以及headless无界面显示
- 通过账号密码登录
- 切换选项卡execute_script(“window_open”),browser.switch_to_window(broser.window_handles[1]), get需要访问的地址,爬取数据
- 由于这里一直使用代理来访问,所以需要一直校验是否成功
方法二:session的运用(速度快)
- 创建个session
- session.get访问登录页面,获取_token的cookies信息, post提交表单时候需要用到
- session.post模拟登录
- 登录之后,session就保存了登录时候的信息,这个时候,就可以给session添加代理,然后访问响应的网站,就可以获取得到登录账号后的响应页面的信息。
补充: 这里需要特别注意的是,session.post请求,模拟登录,需要_token的cookies信息、email账号、password密码,我门可以通过抓包软件,就可以看到post请求中需要的数据