爬虫学习 ----- 第二章 爬取静态网站 ---------- 05. 防盗链,爬取梨视频之 referer XHR

Posted Zero_Adam

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫学习 ----- 第二章 爬取静态网站 ---------- 05. 防盗链,爬取梨视频之 referer XHR相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

学习自:https://www.bilibili.com/video/BV1b64y117X6?p=43&spm_id_from=pageDriver

总述一下吧:

就是我们正常的页面,然后F12,看到的源码,是网页加载完毕之后的所有元素的源码, 但是我们 爬取查看页面源代码看到的却和F12不一样,我们这时候查看到的就是 这一个页面的源码,

但是可能我们想要爬取的东西没有直接在 这个页面中,而是后期js或者Ajax等加载完的。然后我们要

1.好复杂啊,,,,吐了。。

在这里插入图片描述
在这里插入图片描述

但是 这个在页面源代码中看不到。。。这就很恶心了,,就是反爬机制

在这里插入图片描述

那就判断,,既然不再 这个页面的源代码里面,那么就是 后期的js脚本,加载之后又放到了这里面了。

进入我们要爬取的视频的连接

然后点击进入那个视频连接

???这里有个疑问,只靠爬虫不能够找到这个进入的连接口吗??

可以的。把后面的爬完之后在回来整这个。

进入这个单独的一个视频的网站,

在这里插入图片描述

刷新页面,并选择 XHR。

在这里插入图片描述
在这里插入图片描述

!!!就找到了啊!!!,,但是不对的,,,我赋值下来这个url之后, 访问,是不对的。

1. 发现url不对啊,,404访问不到啊。。那就比较一下两个url,看看是哪里的问题。

在这里插入图片描述

那我们看看url之间的区别。

在这里插入图片描述
在这里插入图片描述

那么我们从网站的角度来思考是做了什么操作。

在这里插入图片描述

网页从这个XHR包中拿到srcurl之后,然后将中间这串数字替换成立 cont- ***之类的。然后我们就找一下在哪里。

在这里插入图片描述

2. 获取url中的数据,不用re来做!!!,用到url.split。聪明啊!!!

在这里插入图片描述

import re
import requests

url = 'https://www.pearvideo.com/video_1727856' # 这个就是点开的视频的样子,这个也是可以批量抓取的,抓不到的是视频的本身的地址。

contId = url.split('_')[1] # 妙啊妙啊,

header = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/90.0.4430.93 Safari/537.36',
    'Referer':'https://www.pearvideo.com/video_1727856'
}
# 这个是那个,F12有链接,但是 源码没有连接的那个页面。需要我们刷新抓包 XHR中的那个包,
# TurthUrl = 'https://www.pearvideo.com/videoStatus.jsp?contId=1727856&mrd=0.18480170530072626' # 最后面的是 随机数,然后contID可以传参进来
videoStatusUrl = f"https://www.pearvideo.com/videoStatus.jsp?contId={contId}"

resp = requests.get(url = videoStatusUrl,headers = header)
print (resp.content)

在这里插入图片描述

3. url的部分内容的替换:

在这里插入图片描述

在这里插入图片描述

import re
import requests

url = 'https://www.pearvideo.com/video_1727856' # 这个就是点开的视频的样子,这个也是可以批量抓取的,抓不到的是视频的本身的地址。

contId = url.split('_')[1] # 妙啊妙啊,

header = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36',
    'Referer':'https://www.pearvideo.com/video_1727856'
}
# 这个是那个,F12有链接,但是 源码没有连接的那个页面。需要我们刷新抓包 XHR中的那个包,
# TurthUrl = 'https://www.pearvideo.com/videoStatus.jsp?contId=1727856&mrd=0.18480170530072626' # 最后面的是 随机数,然后contID可以传参进来
videoStatusUrl = f"https://www.pearvideo.com/videoStatus.jsp?contId={contId}"

resp = requests.get(url = videoStatusUrl,headers = header)
# print (resp.json()) # 变成json格式,便于获取变量,

systemTime = resp.json()['systemTime']
srcUrl = resp.json()['videoInfo']['videos']['srcUrl']

# print (srcUrl) # https://video.pearvideo.com/mp4/adshort/20210427/1620391070930-15665162_adpkg-ad_hd.mp4  .。这个还要替换一下
# 这个 是 真正的   https://video.pearvideo.com/mp4/adshort/20210427/cont-1727856-15665162_adpkg-ad_hd.mp4
truthUrl = srcUrl.replace(systemTime,f'cont-{contId}')
print (truthUrl)

# 下载视频:
with open('a.mp4',mode='wb') as f :
    f.write(requests.get(url = truthUrl).content)
    print ("oh");

以上是关于爬虫学习 ----- 第二章 爬取静态网站 ---------- 05. 防盗链,爬取梨视频之 referer XHR的主要内容,如果未能解决你的问题,请参考以下文章

爬虫学习 ----- 第二章 爬取静态网站 ---------- 05. 防盗链,爬取梨视频之 referer XHR

爬虫学习 ----- 第二章 爬取静态网站 ---------- 01 . re 模块学习 ---- python的re库

爬虫学习 ----- 第二章 爬取静态网站 ---------- 03 . re 模块学习 ---- re屠戮电影天堂

18分钟带你掌握商业爬虫框架Scrapy---爬取明星图片

webmagic爬取渲染网站

如何防止网站被爬虫爬取的几种办法