处理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、防盗链、代理相关推荐

  1. python爬虫的防盗链

    文章目录 前言 一.防盗链是什么? 二. 防盗链如何实现 三.分析 四. 对有防盗链的网站进行爬取 对有视频连接的网站发出请求并且获取源码信息 提取出我们的视频网站 对我们提取的网址进行修改,和拼凑 ...

  2. Python爬虫——Cookie模拟登录

    文章目录 Python爬虫--Cookie模拟登录 1.Cookie模拟登录 2.Handler处理器 Python爬虫--Cookie模拟登录 1.Cookie模拟登录 现在很多网站需要用户成功登录 ...

  3. Python爬虫爬取链家网上的房源信息练习

    一 原链接:用Python爬虫爬取链家网上的房源信息_shayebuhui_a的博客-CSDN博客_python爬取链家 打开链家网页:https://sh.lianjia.com/zufang/  ...

  4. python爬虫——Cookie登录爬取豆瓣短评和影评及常见问题

    python爬虫--Cookie登录爬取豆瓣短评和影评 常见问题(本文已解决) 具体步骤 一.获取网页源码 短评.影评 二.解析网页源码及爬取评论 1.短评网页解析 ①确定位置 2.短评爬取 ①名称爬 ...

  5. python爬虫之ProxyPool(代理ip地址池的构建)

    ProxyPool 2020-7-28 安装 安装Python 至少Python3.5以上 安装Redis 安装好之后将Redis服务开启 Redis环境安装(分布式爬虫数据存储) https://b ...

  6. python爬虫cookie池 与ip绑定_Python爬虫防封ip的一些技巧

    在编写爬虫爬取数据的时候,因为很多网站都有反爬虫措施,所以很容易被封IP,就不能继续爬了.在爬取大数据量的数据时更是瑟瑟发抖,时刻担心着下一秒IP可能就被封了. 本文就如何解决这个问题总结出一些应对措 ...

  7. python爬虫cookie池 与ip绑定_Python爬虫:设置Cookie解决网站拦截并爬取蚂蚁短租

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Eastmount PS:如有需要Python学习资料的小伙伴可以加 ...

  8. python爬虫--爬取链家租房信息

    python 爬虫-链家租房信息 爬虫,其实就是爬取web页面上的信息. 链家租房信息页面如下: https://gz.lianjia.com/zufang/ ## python库 Python库 1 ...

  9. python爬虫之:IP代理池开源项目讲解

    Table of Contents 一.项目基本介绍 二.项目讲解 三.一些项目问题答疑 四.代理池设计 一.项目基本介绍 本项目来源于github,截止于2019/08/20,star数量:7133 ...

最新文章

  1. 一步步学习SpringBoot(一) 快速搭建一个web
  2. 李永乐线性代数手写笔记-二次型
  3. 当前订单不支持只花呗支付是什么意思_1、(跑腿介绍篇)支付宝花呗分期线下推广...
  4. 学习笔记(二十)—— 网络编程
  5. android系统的手机目录
  6. Chapter4:Using Standard Control(学习)
  7. python函数定义和调用_函数定义和调用
  8. 128.最长连续序列
  9. Nuxt项目支持import写法的最新解决方案
  10. 冷知识 —— 计算机科学及编程
  11. dadayi大一c语言累加编程题,c++习题答案中国电力出版社
  12. rsync + inotify 数据实时同步
  13. 电脑显示器尽快触摸化
  14. Tools —— 以管理员身份运行bat文件闪退
  15. Hyperlynx DDR SI 仿真分析技术 | IBIS 模型适配
  16. 南方cass计算表面积_CASS-工程应用“计算表面积”
  17. SVN使用教程(一)
  18. 简单保护动物网页制作stu-works.com学生保护动物网页设计作品HTML 濒危动物静态网页成品下载
  19. 借助“商业模式画布”探索产品的用户需求与价值主张
  20. 专家:应对禽流感需储备不同种药物

热门文章

  1. 035捷联惯导中三种姿态更新算法说明
  2. 手机屏幕坏了如何把手机里面的资料取出来_手机应急处理—进水篇
  3. [Swift]LeetCode1135. 最低成本联通所有城市 | Connecting Cities With Minimum Cost
  4. 51单片机与HC-05蓝牙模块连接使用
  5. USB 3G卡热插拔那些事2
  6. 《高通mbhc耳机检测》
  7. ubuntu邮箱软件 Evolution 配置
  8. [笔记]SSH 端口转发
  9. Queuing(矩阵快速幂)
  10. 亚马逊必备神器:防关联浏览器