python爬虫–验证码、cookie、代理
基本知识
模拟登陆:
爬取基于某些用户的用户信息
点击登陆按钮之后发起post请求
post请求中会携带登陆之前录入的相关登陆信息(用户名,密码,验证码。。。)
Cookie
http/https协议特性:无状态。
没有请求到对应页码数据的原因:
发起第二次基于个人主页的页面请求的时候,服务器端并不知到本次请求是基于登陆状态下的请求。
Cookie:用来让服务器端记录客户端的相关状态
手动处理:
通过抓包工具获取Cookie值,将该值封装到headers中
自动处理:
session会话对象:
- 1.可以进行请求的发送
- 2.如果请求过程中产生了cookie,则cookie会被自动存储/携带在该Session对象中
操作步骤:
- 1.创建一个session对象:session = requests.Session()
- 2.使用sess ion对象进行模拟登录post请求的发送( cookie就会被存储在session中)
- 3.session对象对个人主页对应的get请求进行发送(携带了cookie)
古诗文网验证码识别
https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx
代码
Classcjy
import requests
from hashlib import md5
class Chaojiying_Client(object):
def __init__(self, username, password, soft_id):
self.username = username
password = password.encode('utf-8')
self.password = md5(password).hexdigest()
self.soft_id = soft_id
self.base_params = {
'user': self.username,
'pass2': self.password,
'softid': self.soft_id,
}
self.headers = {
'Connection': 'Keep-Alive',
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
}
def