马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小白如果有满意的答案,一定会及时结帖的,恳请路过的大佬、大神们帮助。
我的目标是要爬取:梨视频中-生活-最热中的4个视频。这个只是练习用。--我正在学习的爬虫教程视频,老师讲解的代码已经挂掉了,所以我只好自己写。
以下是我的分析:
1. 点开 其中一个这个梨视频的《超好听!中国老人演绎拉美歌曲》的网址进行分析和观察
https://www.pearvideo.com/video_1703247
(1)打开检查,抓包,定位到video_1703247,这个数据包的response并没有这个视频真正的地址,由此判断,这个视频地址是动态加载。
(2)点击XHR,发现一个ajax请求,response里面貌似包含 视频地址。请问以下蓝色的URL这个是不是真正的视频地址呢?
{
"resultCode":"1",
"resultMsg":"success", "reqId":"913ffda9-383e-4665-b927-8ac0b18ea488",
"systemTime": "1603642230586",
"videoInfo":{"playSta":"1","video_image":"https://image.pearvideo.com/cont/20201023/10008579-151234-1.png","videos":{"hdUrl":"","hdflvUrl":"","sdUrl":"","sdflvUrl":"","srcUrl":"https://video.pearvideo.com/mp4/third/20201023/1603642230586-10008579-151057-hd.mp4"}}
}
下面是我的代码,可是我爬下来,结果却没有这个视频地址,是我的代码写错了吗?
import requests
from lxml import etree
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
url = 'https://www.pearvideo.com/category_5'
page_text = requests.get(url=url, headers=headers).text
tree = etree.HTML(page_text)
#li_list = tree.xpath('//div[@id="listvideo-list clearfix"/ul/li]')
li_list = tree.xpath('//ul[@id="listvideoListUl"]/li')
for li in li_list:
detail_url = 'https://www.pearvideo.com/'+ li.xpath('./div/a/@href')[0]
name = li.xpath('./div/a/div[2]/text()')[0] + '.mp4'
id = li.xpath('./div/a/@href')[0].split('_')[1]
#print(detail_url, name,id)
#https://www.pearvideo.com/videoStatus.jsp?contId=1703247&mrd=0.9360606488589007
ajax_url = 'https://www.pearvideo.com/videoStatus.jsp'
params = {
'contId': id,
'mrd': '0.9360606488589007'
}
ajax_page_text = requests.get(url=ajax_url, headers=headers, params=params).json()
print( ajax_page_text)
把 Referer 加进去就能找到mp4了
|