python带你采集不可言说网站数据,并带你多重骚操作~

news/2024/5/20 13:20:13/文章来源:https://blog.csdn.net/python56123/article/details/125203915

前言

嗨喽,大家好呀,这里是魔王呐~

今天我们采集国内知名的shipin弹幕网站!

这里有及时的动漫新番,活跃的ACG氛围,有创意的Up主。

大家可以在这里找到许多欢乐。

image.png

目录(可根据个人情况点击你想看的地方💗)

  • 前言
  • python方向
  • 环境使用:
  • 模块使用:
      • 需要安装模块
      • 内置模块 你安装好python环境就可以了
  • 秘籍 <适用于任何网站, 采集任何数据>
      • 一. 数据来源分析
      • 二. 代码实现步骤过程 基本四大步骤
  • 代码
      • 1. 导入所需模块
      • 2. 模拟浏览器发送请求
      • 3. 获取数据
      • 4. 保存数据
      • 5. 实现搜索功能
      • 6. 采集多个shipin
      • 7. 获取id
      • 8. 一个简单的操作界面
  • 尾语

python方向

  • 爬虫程序 >>> 爬虫工程师 采集数据处理
  • 网站开发 >>> 开发工程师
  • 数据分析 >>> 数据分析师 处理表格 word
  • 自动化
  • 游戏开发/辅助
  • 人工智能/机器学习 深度学习
  • 自动化测试 运维

环境使用:

  • Python 3.8
  • Pycharm 2021.2版本
  • ffmpeg

<需要设置环境变量> 软件的使用 合成视频和音频 需要私我领取

模块使用:

需要安装模块

  • import requests >>> pip install requests

内置模块 你安装好python环境就可以了

  • import re
  • import json
  • import subprocess

秘籍 <适用于任何网站, 采集任何数据>

一. 数据来源分析

  1. 确定自己需求 <采集网站是那个, 获取数据是什么东西>
  2. 通过开发者工具进行抓包分析, 分析我们想要数据内容来自于哪里 <通过网页源代码就可以找到相应数据内容>
    shipin信息数据 在网页源代码里面 playinfo里面
    shipin标题

我们想要数据内容都是来自于网页源代码

I. 用浏览器打开这个所采集的网址

II. 在这个网页上面用鼠标右键点击查看网页源代码 会弹出一个新的窗口

III. ctrl + F 打开搜索框 搜索playinfo 可以找到相关信息数据

IV. ctrl + F 打开搜索框 搜索shipin标题, 也可以找到相关的数据内容

二. 代码实现步骤过程 基本四大步骤

  1. 发送请求, 模拟浏览器对于url网址发送请求 <专门定义函数来发送请求>
  2. 获取数据, 获取网页源代码
  3. 解析数据, 提取我们想要数据内容 <shipin信息以及shipin标题>
  4. 保存数据, 把shipin内容保存本地

代码

1. 导入所需模块

不是内置模块的小可耐们记得安装哦~

import requests  # 数据请求模块 <发送请求工具>
import re  # 正则表达式
import json  # 序列化与反序列
import pprint  # 格式化输出模块
import subprocess
import os

因审核机制原因,我把网址里的一些东西删掉了,小可耐们可以自己添加一下哈,很容易的

还有两个字,我用拼音代替了,你们可以改回文字哦 ~

如果有不太会改或者有点点小懒惰的小可耐也可以私信我,我发你呐~ 💖

(或查看并点击网页主页(文章)左侧的流动文字免费获取哦~(可能需要往下划一下呐))

2. 模拟浏览器发送请求

def get_response(html_url, data=None):"""发送请求函数def 关键字 用于自定义函数 get_response 自定义函数名字:param html_url:  形式参数<不具备实际意义> 传入到这个函数参数  发送请求网址:return: 响应对象模拟浏览器发送请求headers 请求头进行伪装模拟 user-agent 用户代理意思 表示浏览器基本身份标识<Response [200]>   <>在python里面表示对象 响应对象 200 状态码 表示请求成功相当于打电话, 打通了嘟嘟嘟声音404 网址不对      相当于你所拨打电话是空号503 服务器有问题   相当于你所拨打电话不在服务区403 你没有访问权限  相当于你所拨打电话正在通话中"""headers = {'referer': 'https://www..com/',  # 防盗链 告诉服务器你请求url是从哪里跳转过来的'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'}response = requests.get(url=html_url, params=data, headers=headers)return response

3. 获取数据

def get_video_info(play_url):"""获取shipin信息函数:param play_url: shipin播放详情页:return: 信息shipin信息仰望星空脚踏实地不会用正则 6 通过相关语法,可以对于字符串数据提取自己想要内容 解析数据re.findall() 通过re模块里面findall 去找到所有我们想要数据内容从什么地方去找什么样数据内容  从response.text里面去找 "title":"(.*?)","pubdate" 中(.*?) 这段是我们想要数据'"title":"(.*?)","pubdate"', response.text保存数据, 标题作为文件名保存, 以字符串数据形式 列表取值len 统计元素个数 [0] 根据索引位置取值 列表索引位置从0开始计数type() 内置函数,查看数据类型"""# 定义了函数, 一定要调用response = get_response(html_url=play_url)  # 调用前面定义好的发送请求函数 函数是可以重复调用# print(response.text)  # response.text 获取响应对象文本数据 <获取网页源代码>  字符串数据title = re.findall('"title":"(.*?)","pubdate"', response.text)[0].replace(' ', '')  # 标题title = re.sub(r'[/\:*?"<>|]', '', title)html_data = re.findall('<script>window.__playinfo__=(.*?)</script>', response.text)[0]  # 视频信息# print(title)# print(html_data)# print(type(html_data))# 为了方便提取数据, 可以把这个html_data 转成json字典数据json_data = json.loads(html_data)# print(json_data)# print(type(json_data))  # 输出一行# 字符串单双引号使用  外面是单引号里面就要使用双引号# pprint.pprint(json_data)  # 格式化展开效果# 字典取值, 键值对取值 根据冒号左边的内容<键>, 提取冒号右边的内容<值>audio_url = json_data['data']['dash']['audio'][0]['baseUrl']video_url = json_data['data']['dash']['video'][0]['baseUrl']print(audio_url)print(video_url)video_info = [title, audio_url, video_url]return video_info

4. 保存数据

def save(title, audio_url, video_url):"""保存数据函数:param title: shipin标题:param audio_url: 音频url:param video_url: shipin画面url:return:"""audio_content = get_response(html_url=audio_url).contentvideo_content = get_response(html_url=video_url).contentwith open('video\\' + title + '.mp3', mode='wb') as f:f.write(audio_content)with open('video\\' + title + '.mp4', mode='wb') as f:f.write(video_content)cmd = f"ffmpeg -i video\\{title}.mp4 -i video\\{title}.mp3 -c:v copy -c:a aac -strict experimental video\\{title}output.mp4"subprocess.run(cmd, shell=True)os.remove(f'video\\{title}.mp4')os.remove(f'video\\{title}.mp3')print('')print(title, '视频下载完成')

5. 实现搜索功能

def get_search(page, word):""":param page: 采集多少页:param word: 搜索关键字:return:"""search_url = 'https://api..com/x/web-interface/search/type'data = {'__refresh__': 'true','_extra': '','context': '','page': page,'page_size': '42','from_source': '','from_spmid': '333.337','platform': 'pc','highlight': '1','single_column': '0','keyword': word,'category_id': '','search_type': 'video','dynamic_offset': '84','preload': 'true','com2co': 'true',}json_data = get_response(html_url=search_url, data=data).json()bv_list = [i['bvid'] for i in json_data['data']['result']]print(bv_list)return bv_list

6. 采集多个shipin

def get_up_video(page, up_id):"""采集up多个shipin:param page: 采集多少页:param up_id: shipin博主ID:return:"""up_link = 'https://api..com/x/space/arc/search'data = {'mid': up_id,'ps': '30','tid': '0','pn': page,'keyword': '','order': 'pubdate','jsonp': 'jsonp',}json_data = get_response(html_url=up_link, data=data).json()bv_list = [i['bvid'] for i in json_data['data']['list']['vlist']]print(bv_list)return bv_list

7. 获取id

def main(bv_id):"""主函数:param bv_id: shipin bv号:return:"""video_info = get_video_info(play_url=f'https://www..com/video/{bv_id}')save(video_info[0], video_info[1], video_info[2])

8. 一个简单的操作界面

if __name__ == '__main__':# 只要你可以看到数据msg = """请输入你要进行的操作:A. 多页数据采集B. 采集单个shipinC. 采集番剧D. 采集某个Up所有shipin内容0. 即可退出系统"""while True:print(msg)kew_word = input('请输入你要进行的操作: ')if kew_word == 'A' or kew_word == 'a':word = input('请输入你想要下载shipin关键字: ')page = input('请输入你想要下载shipin页数: ')for num in range(1, int(page) + 1):bv_list = get_search(page=num, word=word)elif kew_word == 'B' or kew_word == 'b':bv = input('请输入你想要下载shipinBv号: ')elif kew_word == 'C' or kew_word == 'c':print('功能还没上线')elif kew_word == 'D' or kew_word == 'd':up_id = input('请输入你想要下载up主ID: ')page = input('请输入你想要下载shipin页数: ')for num in range(1, int(page) + 1):get_up_video(page=num, up_id=up_id)elif kew_word == '0':break

尾语

成功没有快车道,幸福没有高速路。

所有的成功,都来自不倦地努力和奔跑,所有的幸福都来自平凡的奋斗和坚持

——励志语录

本文章就写完啦~感兴趣的小伙伴可以复制代码去试试

你们的支持是我最大的动力!!记得三连哦~ 💕 欢迎大家阅读往期的文章呀~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_833457.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】批量高速获取 Instagram,一个简单的外国分享网站

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ! Instagram&#xff08;照片墙&#xff09;是一款运行在移动端上的社交应用&#xff0c;以一种快速、美妙和有趣的方式将你随时抓拍下的图片彼此分享&#xff0c;Facebook公司旗下社交应用 本篇文章主要是如何“批量高速获取”I…

SQL注入-攻入Apple ID钓鱼网站实录

之前写的一篇利用SQL注入方式攻击钓鱼网站的文章&#xff0c;现在在博客园再分享一下。 下午&#xff0c;朋友发了一条朋友圈&#xff0c;内容大概这样&#xff1a; 大体就是她的iPhone丢了&#xff0c;收到了钓鱼短信&#xff0c;多么熟悉的套路&#xff0c;如下&#xff1a; …

CNAME关联githubPage域名及中文域名,创建个人网站

对于前端开发来说&#xff0c;部署一个自己的个人网站部署服务器等比较麻烦&#xff0c;如果只是做静态页面的展示GitHubPage完全够用&#xff0c;而且有300M免费的空间&#xff0c;完全满足需求。 首先你要有GitHubPage项目&#xff0c;具体怎么搭建不在这里说了,前端小白也可…

网站发布-noip

使用no-ip发布网站 本文使用no-ip进行域名的申请与绑定以及最后网站的发布。 用户注册 域名申请 选择My Account 选择Dynamic DNS 选择Create Hostname 创建网站名 输入自己想要的Hostname选择DomainRecord Type正常选A&#xff0c;其他的根据自己需求 创建完成 域名配…

高并发高流量网站架构

Web2.0的兴起&#xff0c;掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念&#xff0c;细分了网站功能和用户群&#xff0c;不仅成功的造就了一大批新生的网站&#xff0c;也极大的方便了上网的人们。但Web2.0以用户为导向的理念&#xff0c;使得新生的网站有…

制作个人音乐网站

转载于:https://www.cnblogs.com/big-bang3/p/8056870.html

谈谈用ASP.NET开发的大型网站有哪些架构方式(成本)

在上篇文章里(http://www.cnblogs.com/ms0017/archive/2011/07/26/2117676.html)&#xff0c;列举了国内外用ASP.NET开发的大型网站有哪些。最后提到了用.NET开发的大型网站和LAMP/JAVA平台的成本比较。其实在很多时候&#xff0c;收费的不一定就比免费的成本更高。因为开发一个…

大型网站系统架构的演化

前言 一个成熟的大型网站&#xff08;如淘宝、京东等&#xff09;的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性&#xff0c;它总是随着用户量的增加&#xff0c;业务功能的扩展逐渐演变完善的&#xff0c;在这个过程中&#xff0c;开发模式、技术架构、设计…

大型网站技术架构

架构演变第一步&#xff1a;物理分离webserver和数据库 最开始&#xff0c;由于某些想法&#xff0c;于是在互联网上搭建了一个网站&#xff0c;这个时候甚至有可能主机都是租借的&#xff0c;但由于这篇文章我们只关注架构的演变历程&#xff0c;因此就假设这个时候已经是托管…

大型网站技术架构

内容目录&#xff1a;1.初始架构2.应用服务与数据分离3.使用缓存改善网站性能4.应用服务器集群化5.数据库读写分离6.使用反向代理和CDN7.使用分布式FS和分布式DBS8.使用NoSQL和搜索引擎9.业务拆分附&#xff1a;思维导图《大型网站技术架构》读书笔记 - 网站的技术升级路线 本文…

大型网站的架构设计图分享

&#xfeff;&#xfeff;近段时间以来&#xff0c;通过接触有关海量数据处理和搜索引擎的诸多技术&#xff0c;常常见识到不少精妙绝伦的架构图。除了每每感叹于每幅图表面上的绘制的精细之外&#xff0c;更为架构图背后所隐藏的设计思想所叹服。个人这两天一直在搜集各大型网…

也谈大型电子商务网站的架构

&#xfeff;&#xfeff; 看了onecan的 大型Java多用户商城系统设计开发的心得和困难&#xff1a; http://www.iteye.com/topic/1119514 体会或说同感较多&#xff0c;由于那个帖子太长了&#xff0c;所以我把自己的一些心得另开一个来谈。 帖子上大家对是否使用Hibernate有很…

大型电子商务网站架构

&#xfeff;&#xfeff;大型电子商务网站架构之-前端优化 1 前端优化必要性 随着互联网的发展&#xff0c;前端优化越来越被人们重视&#xff0c;在一个大型的大型电子商务网站技术架构中&#xff0c;前端架构一定是一项必不可少的工作&#xff0c;国内几个大型的互联网…

大型网站架构系列:电商网站架构案例

http://www.360doc.com/content/16/0224/12/9075092_537000092.shtml 大型网站架构是一个系列文档&#xff0c;欢迎大家关注。本次分享主题&#xff1a;电商网站架构案例。从电商网站的需求&#xff0c;到单机架构&#xff0c;逐步演变为常用的&#xff0c;可供参考的分布式架构…

大型网站技术架构演变过程

前言 我们以javaweb为例&#xff0c;来搭建一个简单的电商系统&#xff0c;看看这个系统可以如何一步步演变。 该系统具备的功能&#xff1a; 用户模块&#xff1a;用户注册和管理 商品模块&#xff1a;商品展示和管理 交易模块&#xff1a;创建交易和管理 阶段一、单机构建网站…

数据结构算法网站地址

Data Structure Visualization https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

http网站转换成https网站

https&#xff0c;https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题 一&#xff1a;什么是https SSL&#xff08;Security Socket Layer&#xff09;全称是加密套接字协议层&#xff0c;它位于HTTP协议层和TCP协议层之间&#x…

网站推荐(1)

网站推荐&#xff08;1&#xff09; 0x01 合集类 编程导航&#xff1a; https://www.code-nav.cn/ B站鱼皮大大开发的一个汇集编程干货的网站&#xff0c;很不错的 微共享&#xff1a; https://www.wgxxz.cn/ 也是一款资源合集的网站 0x02 实用类 Github&#xff1a;https:…

网站推荐(2)

网站推荐&#xff08;2&#xff09; 书栈网&#xff1a;https://www.bookstack.cn/ 非常推荐的一个网站&#xff0c; 有很多的官方文档和电子书&#xff0c;大多数都专业出名的书籍这里都能找到。 很推荐《常用文档模板》这篇&#xff0c;有很多常用文档的编写模板 杨中科大佬…

网站推荐(3)——黑马Java学习路线

黑马Java学习路线 黑马的java学习路线&#xff0c;很详细&#xff0c;涵盖java基础、Java web 甚至微服务。每个阶段在B站都有配套的视频&#xff0c;同时资料也是可以下载的。非常适合学习 地址&#xff1a;http://yun.itheima.com/map/javaeetree?pc&jingjiaczpz-PC-1#m…