麦田孤望者 发表于 2020-3-28 15:19

[原创]下载 好看视频 的视频

本帖最后由 麦田孤望者 于 2020-3-28 15:58 编辑

用到的第三方库:requests,lxml
(添加了搜索的功能)
import requests
import os,time
from lxml import etree

path = os.path.abspath(os.path.dirname(__file__))+'\\'


def getCookie():
    global r
    global headers
    headers = {}
    headers['user-agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36'
    r = requests.session()
    res = r.get('https://haokan.baidu.com/', headers=headers)

    headers['Cookie'] = res.headers['Set-Cookie']


def downloadVideo(url):

    getCookie()
    res = r.get(url, headers=headers)
    html = etree.HTML(res.text, etree.HTMLParser())
    result = html.xpath('/html/body/div/div/div/div/div/video/@src')
    videoUrl = result
    result = html.xpath('/html/body/div/div/div/div/h2/text()')
    title = result
    headers['referer'] = url
    VideoBytes = r.get(videoUrl, headers=headers).content
    with open(path+title+'.mp4', 'wb') as f:
      f.write(VideoBytes)

    print(title, '下载成功')

    time.sleep(2)


def searchVideo(keyword):
    getCookie()

    baseUrl = 'https://haokan.baidu.com/videoui/page/search?pn=1&rn=10&_format=json&tab=video&query='

    kw = str(keyword.encode('utf-8')).replace('\\x', '%').upper()

    headers['referer'] = 'https://haokan.baidu.com/videoui/page/search?query='+kw
    headers['host'] = 'haokan.baidu.com'

    fullUrl = baseUrl+kw

    VideoInfoList = r.get(fullUrl, headers=headers).json()[
      'data']['response']['list']

    WaitInfoList = []
    for index, i in enumerate(VideoInfoList):
      WaitInfoList.append((i['title'], i['author'], i['duration'], i['read_num'], i['publishTimeText'], i['url']))
      print('\n', '【'+str(index)+'】', i['title'], '\n', '作者:', i['author'], '\n', '时长:', i['duration'], '\n', '播放量:', i['read_num'])

    cho = int(input('请输入您需要的视频的序号:'))

    url = WaitInfoList

    downloadVideo(url)


def main():

    cho = input('''
--------欢迎使用好看视频下载器!---------
请选择功能:
【1】下载视频
【2】搜索并下载视频
请输入序号:
''')
   
    if cho == '1':
      downloadVideo(input('请输入视频链接:'))
    elif cho == '2':
      searchVideo(input('请输入搜索关键词'))
    else:
      print('非法输入!')
      time.sleep(2)

main()
临时测试链接:https://haokan.baidu.com/v?vid=7557870878451954662&pd=bjh&fr=bjhauthor&type=video
(如果这里不能放外链的话麻烦管理告知)

求评分嘤嘤嘤{:301_999:}

gutisangluo 发表于 2020-5-18 10:49

本帖最后由 gutisangluo 于 2020-5-18 10:54 编辑

{:1_907:}视频下到哪里去了呀   没看到代码里有路径啊。。。


找到了。。。


原理能扩展到其他视频网站吗?

暗黑破坏神 发表于 2020-7-9 11:31

测试了一下,发现下载的是标清的视频,比较模糊,地址页面上的html代码里有超清的。
奇怪的是,手动观察html页面时,/html/body/div/div/div/div/div/video/@src确实是高清地址的位置,但为啥下载的是标清的呢?
我用selenium打开网页,再用"return document.getElementsByTagName('video').src" 获取到地址后,再下载,就是高清了。
不知道是不是好看视频页面做了反爬机制,值得探讨

18537712149 发表于 2020-3-28 15:28

可以去水印吗

偷喝奶的浣熊 发表于 2020-3-28 15:39

溜溜。看看怎么样

小非凡 发表于 2020-3-28 15:39

麦田孤望者 发表于 2020-3-28 15:42

18537712149 发表于 2020-3-28 15:28
可以去水印吗

去不了
原视频就有水印

星星知我心 发表于 2020-3-28 16:09

不明白这个怎么用。

gglaiba 发表于 2020-3-28 16:11

18537712149 发表于 2020-3-28 15:28
可以去水印吗

对,能去掉 右上角 好看视频 的水印吗,好看视频是最不好去水印的

gglaiba 发表于 2020-3-28 16:12

麦田孤望者 发表于 2020-3-28 15:42
去不了
原视频就有水印

好看视频太狠了,上传后的视频都从新生成一个带水印的原视频

otho 发表于 2020-3-28 16:44

研究一下。谢谢楼主分享!

mokson 发表于 2020-3-28 17:29

页: [1] 2 3
查看完整版本: [原创]下载 好看视频 的视频