验证码识别:
验证码的作用:反爬虫。他是动态的,用户每次发送请求,验证码都会刷新。
爬取方式:通过第三方工具进行爬取;首先获取验证码的url,保存验证码图像到本地,然后利用第三方工具进行识别。
为post请求类型,并且携带参数。
response.status_code
若响应的状态码为200,则表示请求成功。
模拟登录:
爬取基于某些用户的用户信息。
- 点击登录按钮后会发起一个post请求。
- post请求中会携带登录之前录入的相关信息(用户名,密码,验证码等)。
- 验证码在每次请求后都会变化。
- http/https协议的特性:无状态。在爬取到验证码信息,登录之后,想对用户的详情页面进行相关数据爬取时,第二次的请求未请求到页面数据。原因:第二次请求的时候,服务器端并不知道该次请求是基于登录状态下的请求。
- cookie:用来让服务器记录客户端的相关状态。
(1)手动处理:通过抓包工具抓取到cookie信息,将该值写入headers字典中。(变为固定的值,不建议)
(2)自动处理:首先明确cookie值为登录post请求后,由服务器端创建。利用于session会话对象来获取:作用 1.可以进行请求的发送。2.如果请求过程中产生了cookie,则该cookie会被自动存储,携带在该session对象中。
首先创建一session对象:session = requests.Session()
使用session进行post请求的发送,若产生了cookie,则会自动保存:response = session.post(url,headers,data)
爬取用户当前页面的数据:即使用携带了cookie的session进行get请求(登录之后的再次请求)。detail_page = session.get(url,headers).text