python爬虫--cookie、防盗链、代理
处理cookie
1.cookie就是在浏览器登录页面的时候,你把你的的账号和密码输入,主机会接受到你的用户名和密码,然后校验正确性,如果用户名和密码正确,主机会向你的浏览器里面的cookie里面写入一串代码,以后你如果再次向服务器发送请求就会带着这个cookie去访问主机。
在我们学的之前的爬取的三大方法里面,我们抓取的都是可视化的,即你可以找到你想爬取的内容,但是当我们碰到需要用户登录的时候,会出现一点问题。比如一些页面在登录以后,你需要爬取里面“我的”的内容,像”你的浏览“、“你保存的东西”,这样爬取需要两步:第一步就是登录得到cookie。第二步就是带着cookie去请求url。我们要是直接用requests请求去爬取里面的数据,会显示用户信息错误i,这样的话有两个解决方案:第一就是用session进行请求,这样的话cookie就不会消失 第二就是可以在requests中直接加入cookie 。
1.用session请求cookie
我们这里以17k小说网为例,拿到17k小说中“我的书架”中的内容。我们主要就是要拿到这个访问的url ,我们在登录之后,在检查页面找到login这个目录,login里面的url就是我们要去请求的url
当我们第一次拿到我们想要请求的这个url之后,我们要到“我的书架”拿到我们想要的东西,这时候如果用requests进行请求的话,会开始一个新的请求。我们刚才拿到的cookie就会消失,所以用session请求将两个步骤连起来。用session请求“我的书架”上的数据也是一样的,在检查页面找到“我的书架”里面的内容,访问url就可以了
import requestssession = requests.session()
data = {'loginName': '11111','p——w': ''
}#1.登录
url = 'https://passport.17k.com/ck/user/login'
session.post(url,data=data)
#2.拿到书架上的数据
session.get("https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919")
2.在requests请求中直接加入cookie
之前说过,如果我们直接用requests去请求“我的书架”的内容 就会出现这样的问题
这样我们就需要在我们请求的url里面找到一长串的cookie 然后复制粘贴进去
防盗链
我们这里以抓取梨视频为例子,在我们抓取梨视频的时候,在检查页面可以定位到视频本身是video这个标签,但是在页面源代码中并没有任何显示任何video标签,这样用爬虫爬取视频的时候就定位不到
这样有一个问题,我们在检查页面中的开发者工具和页面源代码是有偏差的。检查页面中的开发者工具显示的是实时的页面数据,里面可以找到这个video标签
我们通过开发者工具定位到视频我们就会找到这个视频本身的url,但是我们复制粘贴访问是什么也没有的,这时候我们就要对比页面源代码那个<video>标签中的url和我们在开发者工具中的url。
我们发现前面都是一样的,一直到20170314后面的内容不一样,而后面不一样的内容就是上面可以找到的systemTime。呢我们在爬取的时候只需要将中间的内容替换就可以拿到了。我们就需要以下几步
#拿到contid
#拿到video_status返回的srcurl
#对srcurl中的内容进行修正
#拿到视频真正的下载路径进行下载
import requests
url = 'https://www.pearvideo.com/video_1047268'
contid = url.split("_")[1]
video_status = f"https://www.pearvideo.com/videoStatus.jsp?contId={contid}&mrd=0.22973357777189096"
resp = requests.get(video_status)
print(resp.text)
但是我们做到这一步,我们根本拿不到里面的内容,里面会显示,这就是一个防盗链的问题
我们通常会加上开发者工具页面的refer,这就是一个防盗链,可以认为就是一个溯源,即本次请求的上一级是谁。我去查了一下他的专业解释和目的
图像来自@studyphp123
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36','Referer': 'https://www.pearvideo.com/video_1047268'
}
这样加上溯源就可以解决防盗链的问题
最后我们要把我们想要的srcurl解析出来 就得从这一串json中定位,找到srcurl将它切出来
并且还需要systemtIme 同样的方法拿出来,之后进行位置交换,最后写入文件就可以了
dic = resp.json()
srcUrl = dic['videoInfo']['videos']['srcUrl']
systemTime = dic['systemTime']
srcUrl = srcUrl.replace(systemTime,f'cont-{contid}')
# print(srcUrl)
with open("7.1day",mode='wb') as f:f.write(requests.get(srcUrl).content)
代理
加入你想拿到大量的数据去访问一个网站,你一秒钟访问了很多次,网站就会对你封锁ip 这时候就会用到代理。但代理也算是一个黑色地带,不建议大家使用
原理:通过第三方机器去发送请求
首先可以在网上搜索到一些免费的代理,然后找到ip和端口,跟之前加上headers一样加上一个pories就可以实现代理
porxies = {"https" : "https://47.101.41.163:8080" ,}
resp = requests.get("https://baidu.com",proxies=proxies)
python爬虫--cookie、防盗链、代理相关推荐
- python爬虫的防盗链
文章目录 前言 一.防盗链是什么? 二. 防盗链如何实现 三.分析 四. 对有防盗链的网站进行爬取 对有视频连接的网站发出请求并且获取源码信息 提取出我们的视频网站 对我们提取的网址进行修改,和拼凑 ...
- Python爬虫——Cookie模拟登录
文章目录 Python爬虫--Cookie模拟登录 1.Cookie模拟登录 2.Handler处理器 Python爬虫--Cookie模拟登录 1.Cookie模拟登录 现在很多网站需要用户成功登录 ...
- Python爬虫爬取链家网上的房源信息练习
一 原链接:用Python爬虫爬取链家网上的房源信息_shayebuhui_a的博客-CSDN博客_python爬取链家 打开链家网页:https://sh.lianjia.com/zufang/ ...
- python爬虫——Cookie登录爬取豆瓣短评和影评及常见问题
python爬虫--Cookie登录爬取豆瓣短评和影评 常见问题(本文已解决) 具体步骤 一.获取网页源码 短评.影评 二.解析网页源码及爬取评论 1.短评网页解析 ①确定位置 2.短评爬取 ①名称爬 ...
- python爬虫之ProxyPool(代理ip地址池的构建)
ProxyPool 2020-7-28 安装 安装Python 至少Python3.5以上 安装Redis 安装好之后将Redis服务开启 Redis环境安装(分布式爬虫数据存储) https://b ...
- python爬虫cookie池 与ip绑定_Python爬虫防封ip的一些技巧
在编写爬虫爬取数据的时候,因为很多网站都有反爬虫措施,所以很容易被封IP,就不能继续爬了.在爬取大数据量的数据时更是瑟瑟发抖,时刻担心着下一秒IP可能就被封了. 本文就如何解决这个问题总结出一些应对措 ...
- python爬虫cookie池 与ip绑定_Python爬虫:设置Cookie解决网站拦截并爬取蚂蚁短租
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Eastmount PS:如有需要Python学习资料的小伙伴可以加 ...
- python爬虫--爬取链家租房信息
python 爬虫-链家租房信息 爬虫,其实就是爬取web页面上的信息. 链家租房信息页面如下: https://gz.lianjia.com/zufang/ ## python库 Python库 1 ...
- python爬虫之:IP代理池开源项目讲解
Table of Contents 一.项目基本介绍 二.项目讲解 三.一些项目问题答疑 四.代理池设计 一.项目基本介绍 本项目来源于github,截止于2019/08/20,star数量:7133 ...
最新文章
- 一步步学习SpringBoot(一) 快速搭建一个web
- 李永乐线性代数手写笔记-二次型
- 当前订单不支持只花呗支付是什么意思_1、(跑腿介绍篇)支付宝花呗分期线下推广...
- 学习笔记(二十)—— 网络编程
- android系统的手机目录
- Chapter4:Using Standard Control(学习)
- python函数定义和调用_函数定义和调用
- 128.最长连续序列
- Nuxt项目支持import写法的最新解决方案
- 冷知识 —— 计算机科学及编程
- dadayi大一c语言累加编程题,c++习题答案中国电力出版社
- rsync + inotify 数据实时同步
- 电脑显示器尽快触摸化
- Tools —— 以管理员身份运行bat文件闪退
- Hyperlynx DDR SI 仿真分析技术 | IBIS 模型适配
- 南方cass计算表面积_CASS-工程应用“计算表面积”
- SVN使用教程(一)
- 简单保护动物网页制作stu-works.com学生保护动物网页设计作品HTML 濒危动物静态网页成品下载
- 借助“商业模式画布”探索产品的用户需求与价值主张
- 专家:应对禽流感需储备不同种药物