cookie使用
cookie是存储在客户端的一组键值对
web在cookie的典型应用是免密登录
cookie和爬虫之间的关联:
有时,在对一张页面进行请求的时候,如果请求的过程中不携带cookie的话,
那么就无法请求到正确的页面数据,。因此cookie是爬虫中一个非常典型且常见的反爬机制
import requests import json session = requests.Session() # 创建session对象 #第一次使用session捕获且存储cookie,猜测网页首页发起的请求可能会产生cookie main_url = 'http://xueqiu.com/' session.get(main_url,headers=headers) # 捕获且存储cookie url = "http://........." #动态加载的url data = session.get(url=url,headesr=headers).json # 携带cookie发起的请求 data
cookie处理方式
方式1:手动处理 将抓包工具中的cookie粘贴在headers中 弊端:cookie如果过了有效时长则该方式失效 方式2:自动处理 -基于session对象实现自动处理 -如何获取session对象:requests.Session()返回一个session对象 -session对象的作用: 该对象可以向requests一样调用get和post方法发起指定请求,只不过如果使用session发请求的过程中如果产生了cookie,则cookie会被自动存储到该session对象中,那么意味着下次再次使用session对象发起请求,则该请求就是携带cookie进行的请求发送 -在爬虫中使用session的时候,session对象至少会被使用几次? 两次,第一次使用session是为了将cookie捕获且存储到session对象中。下次的时候就是携带cookie进行的请求发送。
代理操作
-在爬虫中,所谓代理是什么? 指的是代理服务器 -代理服务器的作用是什么? 是用来转发请求和响应的 -在爬虫中为什么需要使用代理服务器? 如果爬虫在短时间内对服务器发起了高频的请求,那么服务器会检测到这样的一个异常行为,就会将该请求对应设备的ip禁掉,这client设备就无法对服务端再次进行请求发送。 如果ip被禁,就可以使用代理服务器进行请求转发,破解ip被禁的反爬机制。因为使用代理后,服务端接收到的请求对应的ip地址就是代理服务器,而不是真正的客户端 -代理服务器分为不同的匿名度 -透明代理:使用该形式代理,服务器知道使用了代理机制,也知道真实ip -匿名代理:知道使用了代理,但不知道真实ip -高匿代理:不知道使用了代理,也不知道真实ip -代理类型 -https:代理只能转发https协议的请求 -http:转发http请求 -代理服务器 -快代理 -西祠代理 -doubanjia -代理精灵(推荐)http://www.zhilianip.com/
案例代码
import random import requests from lxml import etree url = "http://........." data = requests.get(url,headers=headers).text tree = etree.HTML(data) proxy_list = tree.xpath('//body//text()') # 获取代理ip http_proxy = [] # 存放代理ip for proxy in proxy_list: dic = { 'https':proxy } http_proxy.append(dic) #url模板 url = "http://.......%d" ips = [] for page in range(1,11): new_url = format(url%page) #当次请求使用代理机制,就可以更换请求的ip地址 page_data = requests.get(url=new_url,headers=headres,proxies=random.choice(http_proxy)).text # 随机获取列表中某一个IP地址 tree = etree.HTML(page_data) #在xpath中不能出现tbody标签 tr_list = tree.xpath('//*[@id="ip_list"]//tr')[1:] for tr in tr_list: ip = tr.xpath('./td[2]/text()')[0] ips.append(ip) print(len(ips))
标签:请求,url,ip,代理,session,cookie From: https://www.cnblogs.com/xiongying4/p/17438437.html