当前位置: 代码网 > it编程>前端脚本>Python > python-爬虫实例(4):获取b站的章若楠的视频

python-爬虫实例(4):获取b站的章若楠的视频

2024年07月28日 Python 我要评论
章若楠赛高!!!

目录

前言

        道路千万条,安全第一条

        爬虫不谨慎,亲人两行泪

获取b站的章若楠的视频

一、话不多说,先上代码

二、爬虫四步走

1.ua伪装

2.获取url

3.发送请求

 4.获取响应数据进行解析并保存

 总结


前言

        道路千万条,安全第一条

        爬虫不谨慎,亲人两行泪

 

获取b站的章若楠的视频

        不要问,问就是博主喜欢,嘿嘿嘿嘿(流口水)

 

 

一、话不多说,先上代码

# 请求b站视频
import json
import requests
from lxml import etree

if __name__ == '__main__':
    head = {
        "user-agent": "mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/126.0.0.0 safari/537.36 edg/126.0.0.0"
        ,
        # 防盗链
        "referer": "https://www.bilibili.com/"
        ,
        "cookie": "buvid3=3eef3ee1-472c-f430-105f-0e4f321f331c25161infoc; b_nut=1720613925; _uuid=46847d108-efd1-9828-99910-32119eadb6eb26022infoc; enable_web_push=disable; buvid4=e9918a3a-008d-2748-2b1f-78b04e8cca5825688-024071012-iyjqtqw8dtdtri0uy1ugvq%3d%3d; buvid_fp=adf3cfaf35396cd4f051041d58ea252d; dedeuserid=455536180; dedeuserid__ckmd5=ece5cba51b3582b0; header_theme_version=close; rpdid=|(y|rjrrj~m0j'u~k|yur|k); hit-dyn-v2=1; current_blackgap=0; current_fnval=4048; current_quality=80; b_lsid=fa4254f2_190da67f5a6; bmg_af_switch=1; bmg_src_def_domain=i0.hdslb.com; sessdata=464ec009%2c1737203167%2c4093c%2a72cjccams6qdnftcrgmbranrb57rdcvogveyq2eanilbiztke2ujiipqzydhlahzdf-lqsvnbetdb6rc1irtbpoxe0mxjvwndtq2j5m0ttrudsnzv4edbos0zhsnjfngstuxdozv9ywlfdmun6wktnvwdyzznxthoxx3zhmeq4wnbrvfhus3fwdlzriiec; bili_jct=7dcc1afe4e9061803755fe502bd89493; home_feed_column=5; browser_resolution=1528-750; bili_ticket=eyjhbgcioijiuzi1niisimtpzci6inmwmyisinr5cci6ikpxvcj9.eyjlehaioje3mje5mtazodcsimlhdci6mtcymty1mteynywicgx0ijotmx0.zbtc3ihjtixkw31_mmril58ebbfttxfrh9pxvdenu74; bili_ticket_expires=1721910327; sid=5oumv249; bp_t_offset_455536180=956974561008549888"
    }

    url = "https://www.bilibili.com/video/bv1ya411x7ys/?spm_id_from=333.788.recommend_more_video.-1&vd_source=c37b332e3068ca57bd61f05c52b41922"

    response = requests.get(url, headers=head)

    vid = response.text

    tree = etree.html(vid)

    with open("bilibili.html", "w", encoding="utf8") as bili:
        bili.write(vid)

    vid_info = "".join(tree.xpath("//head/script[4]/text()"))[20:]
    # print(vid_info)   # 是一个json大字符串

    info_dict = json.loads(vid_info)
    # print(info_dict)  # 变成字典

    video_url = info_dict["data"]["dash"]["video"][0]["baseurl"]  # 获取视频的网址
    audio_url = info_dict["data"]["dash"]["audio"][0]["baseurl"]  # 获取音频的网址

    video_content = requests.get(video_url, headers=head).content
    audio_content = requests.get(audio_url, headers=head).content

    with open("zhangruonan.wmv", "wb") as a:
        a.write(video_content)

    with open("zhangruonan.mp4", "wb") as b:
        b.write(audio_content)

    pass

        可以看见,这次代码多了不少东西,还有些变得不一样了,没事,我们一步步分析。

 

二、爬虫四步走

1.ua伪装

        这次ua伪装的头部代码多了不少,"cookie"和"referer",这些其实都是b站的反扒机制。而且这次也不用随机生成ua了,而是使用检查里的,因为随机生成的可能是app端的,这个用不了。

  • 先登录自己的b站账号,再获取cookie,因为每个用户的cookie是不一样的197af90cade14473a4951e0f1f076090.png
  • 获取ua,ab41406bb2f8457ebed5a14f1d30226a.png
  • 获取referer。df0e3bc694544a1787d18b9aa527c08a.png

 

2.获取url

        在该界面按f12进入检查界面,若是检查界面没东西的话就刷新网页,然后往上翻到第一个,复制url粘贴到pycharm即可cd9682dd998647e9ab11ce3edb90f7fd.png

 

3.发送请求

流水的url,铁打的发送请求。

response = requests.get(url, headers=head)

 

 4.获取响应数据进行解析并保存

  • 这次不一样的地方在于,视频和音频的url在head的第四个script标签下。
  • 而里面的文本内容在去除前面的"window.__playinfo__="后,取出来的是个json大字符串。
  • 用json.loads方法将字符串转换成字典,再通过字典的键去取里面的视频和音频的url。
  • b站的视频和音频网址都放在固定的键内,用上面给的代码即可取出来。
  • 取出来之后再次发送请求,获取数据。
  • 注意!!!图片,视频和音频都是二进制内容,所以用content属性获取。
  • 最后, 以写二进制内容的方式存入文件中,注意文件的类型,音频是mp4,视频是mp4或者是wmv。

cd57cda9da60489d843f74f57aa6b5af.png

 

 总结

作者的废话:

        章若楠太好看啦!

封面图片:

e81c0805ea854baa9fab333f9e907007.jpeg

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com