好久不见,我又来了。。。
上次给大家分享了如何爬取某平台付费音乐的方法,我在后台收到了一些好友的留言,说能不能分享一下如何爬取视频网站的教程。的确,我到现在还没有做过这方面的研究,那今天我们就分享一下,如何爬取百思不得姐这个网站的视频。为什么选择这个网站呢,因为这个相对来说比较简单,它可以为我们爬取抖音视频做铺垫,那么你就知道我们下次的文章就是介绍如何爬取抖音视频了。好了话不多说,我们开始研究。
1
首先我们打开百思不得姐网站的视频部分,链接在这里:http://www.budejie.com/video/,打开一下就是这个样子:
老规矩,首先开启开发者模式,审查元素了解一下,然后立马就能发现视频链接:
然后将图中的href属性的值与主域名进行绑定,播放地址就出来了?这爬虫怎么这么简单,比爬文字、图片简单多了!其实并不是,没有这么简单。因为你这样输入地址就会发现是错误的链接:
是不是感觉被套路了?哈哈哈哈,其实这个是最基本的套路了,我见过比这个更套路人的,里面竟然有一个性别参数,针对男女显示不同的页面。。。。好了,我们继续。我们尝试将点击播放页面,发现下面图中一段类似于图片的链接,就是这个播放框对应的页面元素位置:
但是当我们点击图中播放框中间的播放倒三角按钮时,发现页面链接没有发生变化,依旧是图片地址,但是这里的视频却是开始播放了。这个是不是有点疑惑?
如果你不相信,那你可以点击图中的图片链接:http://mpic.spriteapp.cn/crop/566x360/picture/2019/0314/29295118_103.jpg,
一回车图片就出来了:
这就是该视频的封面图片,那么现在问题来了?(不是问你挖掘技术哪家强)真实的视频播放地址到底在哪里呢?
这个网站有一个非常好的地方就是提供了视频下载接口,点击下载按钮,就会弹出下载窗口:
看到没有,视频都是mp4结尾的,那好我们在源码里面搜一下,看有没有包含mp4的代码:
出现了,我们点击一下这个链接,你会发现这个就是我们触发弹窗的链接。如此看来,我们就找到了视频地址。还有就是视频的页数,通过多次观察这里的页数一共有50页,这个大家不用疑惑,因为我已经判断过了。接下来就是书写代码了,这里我提供一下完整的代码:
import requests
import re
import urllib.request
headers ={
'User-Agent': 'Chrome/50.0.2661.102'
}
# proxies = {
# 'http': 'http://116.209.54.203:9999',
# }
start_url ="http://www.budejie.com/video/"
url_info = []
for i in range(1,51):
url = start_url + str(i) # 拼接url
def parse_html(url):
data = requests.get(url, headers=headers).text
url_content = re.compile('(<div class="j-r-list-c">.*?</div>.*?</div>)', re.S) # 正则编译
url_contents = re.findall(url_content, data)
for x in url_contents:
url_link = r'data-mp4="(.*?)"' # 视频地址
url_items = re.findall(url_link,x)
if url_items: # 判断视频是否存在
name_rev = re.compile(r'<a href="/detail-.{8}?.html">(.*?)</a>', re.S) # 正则编译
name_items = re.findall(name_rev, x)
for k, v in zip(name_items, url_items):
url_info.append([k, v])
print(k,v)
for i in url_info: # i[1]=url i[0]=name
urllib.request.urlretrieve(i[1], 'I:\\Python3.6\\baisibudejie\\video\\%s.mp4' % (i[0]))
parse_html(url)
好了,今天的分享就到这里了,下期我们开始爬取抖音视频啦。