爬取梨视频小视频
网址:http://www.pearvideo.com/
工具:python3,pycharm,火狐浏览器(或谷歌浏览器)
模块:requests,re,os, urllib.request,(如需控制爬取速度,可加入time模块。)
思路:
分析网站
获取网页源代码
获取视频ID
拼接URL地址
获取视频播放地址
下载视频
本文以下载科技类视频为例,所以请求的网址为http://www.pearvideo.com/category_8
如果想下载体育类视频,则更改请求网址:
分析:
首先分析网站,打开开发者工具(F12)
用查看器选中一个视频,我们可以发现视频的ID信息。红框内为视频的id。
打开后,恰好是我们寻找的id。
我们检查网页源代码,查看id,利用正则表达式获取id。reg='<a href="(.*?)" class="vervideo-lilink actplay">'
获取id后,我们获取视频播放地址。在此使用查看器,查看视频,我们发现了一个视频地址。复制后,在新的标签页中打开,正是我们想要获取的视频。
但是我们在网页源代码中,并没有找到这个url地址。在控制台中能找到,但是网页源代码中没有,这是因为video标签是通过js加载的。
我们还是获取播放视频页面的网页源代码,使用正则表达式reg='ldUrl="",srcUrl="(.*?)"',进行匹配,可以在js中匹配到播放地址。我们还需要获取视频的标题。
正则表达式:reg='<h1 class="video-tt">(.*?)</h1>'
下载视频:创建文件夹,存取视频if path not in os.listdir(): os.mkdir(path)
下载urllib.request.urlretrieve
完整代码:有注释
import requests
import re
import os
import urllib.request
下载视频
def download():
#获取网页源代码
url="http://www.pearvideo.com/category_8"
#模拟浏览器去请求服务器
headers={
'User-Agent':'Mozilla / 5.0(Windows NT 10.0;WOW64;rv:62.0) Gecko / 20100101Firefox / 62.0',
}
#状态码
html=requests.get(url,headers=headers)
#print(html.text)
#获取视频id .*?匹配所有
reg='<a href="(.*?)" class="vervideo-lilink actplay">'
video_id=re.findall(reg,html.text)
#print(video_id)
#拼接URL地址
video_url=[]#接收拼接好的url
starturl='http://www.pearvideo.com'+''
for vid in video_id:
newurl=starturl+'/'+vid
#print(newurl)
video_url.append(newurl)
#获取视频播放地址
for purl in video_url:
html=requests.get(purl,headers=headers)
reg='ldUrl="",srcUrl="(.*?)"'
playurl=re.findall(reg,html.text)
#print(playurl)
#获取视频标题
reg='<h1 class="video-tt">(.*?)</h1>'
video_name=re.findall(reg,html.text)
#print(video_name[0])
#下载视频
print('正在下载视频%s'%video_name)
path='video'
if path not in os.listdir():
os.mkdir(path)
filepath=path+"/%s"%video_name[0]+'.mp4'
#下载
urllib.request.urlretrieve(playurl[0],filepath)
download()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
运行结果,获取到视频.
作者:乐亦亦乐
来源:CSDN
原文:https://blog.csdn.net/qq_41251963/article/details/82949553
版权声明:本文为博主原创文章,转载请附上博文链接!
网友评论