Python网络爬虫实战,照片定位与B站弹幕!

Python网络爬虫实战(三)照片定位与B站弹幕 之前两篇已经说完了如何爬取网页以及如何解析其中的数据,那么今天我们就可以开始第一次实战了。 这篇实战包含两个内容。 * 利用爬虫调用Api来解析照片的拍摄位置 * 利用爬虫爬取Bilibili视频中的弹幕 关于爬虫调用Api这一说法,其实就是通过get或者post请求携带着参数,将内容发给对方服务器,服务器会根据请求的Api是哪个来进行处理。 比如说/delete?id=2和/save?id=1&... 阅读详情

之前两篇已经说完了如何爬取网页以及如何解析其中的数据,那么今天我们就可以开始第一次实战了。

Python资源共享群:626017123

这篇实战包含两个内容。

* 利用爬虫调用Api来解析照片的拍摄位置

* 利用爬虫爬取Bilibili视频中的弹幕

关于爬虫调用Api这一说法,其实就是通过get或者post请求携带着参数,将内容发给对方服务器,服务器会根据请求的Api是哪个来进行处理。

比如说/delete?id=2和/save?id=1&name=antz这两个请求就分别是删除id等于2的数据,保存一条id等于1姓名为antz的数据。

此时我们就只需要向对方服务器发送出这个请求就可以了,requests.get(url)就这么简单。

一.根据照片解析定位

不知道你平常拍照片有没有在你手机的设置里仔细查看过,比如说下面这个选项【地理位置】。

 

 

 

 

 

 

打开它之后,我拍的照片上也没有显示地理位置啊?

这是因为这些数据被放在了照片文件数据里面,可能你很难理解,你可以回想一下之前我们说的get之后的响应,响应体分为响应头和响应体。照片的数据也是一样,有信息头(随便叫的)和数据体,信息头里面有你这张照片的各种信息,拍摄时间地点设备等,而数据体就是你用看图软件打开时显示在你眼中的那些了,我们平常关注到的只有数据体,只关心照片是不是好看,而信息头的内容对我们来说其实无关紧要。

下面是我之前拍的一张照片经过解析获得的信息头数据,从里面可以看到照片尺寸,我的Make设备是HUAWEI,我的镜头数据,时间等等。

 

 

 

 

 

 

在Python中我们可以使用exifread库来解析图片的头信息。

pip install exifread

调用exifread的process_file方法,参数传入file,就可以得到照片的exif信息了。

img_exif = exifread.process_file(open("路径", 'rb'))

返回的img_exif是一个字典数据,我们可以直接根据上面那张头数据里面的标题来拿到对应的数据。

# 纬度数
latitude_gps = img_exif['GPS GPSLatitude'] 
# N,S 南北纬方向
latitude_direction = img_exif['GPS GPSLatitudeRef'] 
# 经度数
longitude_gps = img_exif['GPS GPSLongitude'] 
# E,W 东西经方向
longitude_direction = img_exif['GPS GPSLongitudeRef']

这样我们就拿到南北纬以及经纬度了。

那么如何根据这些数据来获得定位呢?

我们可以利用高德地图开放的Api来将经纬度转换为我们能够直接读懂的位置信息。

url = 'https://restapi.amap.com/v3/geocode/regeo?key={}&location={}'

上面是高德地图逆向解析定位的api地址,key需要在高德地图官网申请开发者之后拿到(很容易),location就是经纬度南北纬信息了。

resp = requests.get(url.format(api_key, location))
location_data = json.loads(resp.text)
address = location_data.get('regeocode').get('formatted_address')

上面的代码是不是已经很简单了,requests.get请求api拿到对方返回的结果,返回的数据的json数据,所以loads解析之后直接拿address即可。

这样我们就可以拿到这张照片的拍摄地点了。

 

 

 

 

 

 

二.Bilibili弹幕爬虫

先来思考一个问题,B站一个视频的弹幕最多会有多少?

比较多的会有2000条吧,这么多数据,B站肯定是不会直接把弹幕和这个视频绑在一起的。

也就是说,有一个视频地址为https://www.bilibili.com/video/av67946325,你如果直接去requests.get这个地址,里面是不会有弹幕的,回想第一篇说到的携程异步加载数据的方式,B站的弹幕也一定是先加载当前视频的界面,然后再异步填充弹幕的。

接下来我们就可以打开火狐浏览器(平常可以火狐谷歌控制台都使用,因为谷歌里面因为插件被拦截下来的包在火狐可以抓到,同理谷歌也是)的控制台来观察网络请求了。

经过仔细排查之后,我找到了一个请求xml的,它后面跟了一个oid,查看它的响应内容之后可以发现它就是弹幕文件。

 

 

 

 

 

 

它的响应时间98毫秒,远超其它几个响应,所以说如果把弹幕直接放在视频页面,用户体验一定会很差。

 

 

 

 

 

 

找到弹幕了,爬取它很容易,但是我们想要是爬取固定av号视频的弹幕,而不是说随意去找一个oid来爬取弹幕,这样我们都不知道爬下来的弹幕是哪个视频的。

接下来我们就可以复制oid的117784982值,去视频页面搜索看看了,通过视频来获得它的oid再来爬xml弹幕就很方便了。

这次用了谷歌浏览器,在里面通过搜索oid果然搜索到相关的数据了。

 

 

 

 

 

 

其中cid是弹幕对应的id,aid对应视频av号。

先把这个页面爬取下来。

# encoding: utf-8
import requests
headers = {
    'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
    'Accept': 'text/html',
    'Cookie': "_uuid=1DBA4F96-2E63-8488-DC25-B8623EFF40E773841infoc; buvid3=FE0D3174-E871-4A3E-877C-A4ED86E20523155831infoc; LIVE_BUVID=AUTO8515670521735348; sid=l765gx48; DedeUserID=33717177; DedeUserID__ckMd5=be4de02fd64f0e56; SESSDATA=cf65a5e0%2C1569644183%2Cc4de7381; bili_jct=1e8cdbb5755b4ecd0346761a121650f5; CURRENT_FNVAL=16; stardustvideo=1; rpdid=|(umY))|ukl~0J'ulY~uJm)kJ; UM_distinctid=16ce0e51cf0abc-02da63c2df0b4b-5373e62-1fa400-16ce0e51cf18d8; stardustpgcv=0606; im_notify_type_33717177=0; finger=b3372c5f; CURRENT_QUALITY=112; bp_t_offset_33717177=300203628285382610"
}
resp = requests.get('https://www.bilibili.com/video/av67946325',headers=headers)
print(resp.text)

拿到了内容我们就要从中解析弹幕id了,对于这种规则紊乱的网页,我们就不能用上一篇中Bs4解析了,而是使用正则表达式。

正则表达式最简单的使用方式其实就是直接match。

re.search(匹配规则,文本).group()

 

 

 

 

 

 

观察这里的内容,我们大致的匹配规则就有了。

cid={目标}&aid=av号

117784982就是我们的目标。

av_id = '67946325'
resp = requests.get('https://www.bilibili.com/video/av'+av_id,headers=headers)
match_rule = r'cid=(.*?)&aid'
oid = re.search(match_rule,resp.text).group().replace('cid=','').replace('&aid','')
print('oid='+oid)

先根据av号拿到视频页面,然后解析视频页面拿到oid,最后用oid去请求xml弹幕文件。

xml_url = 'https://api.bilibili.com/x/v1/dm/list.so?oid='+oid
resp = requests.get(xml_url,headers=headers)
print(resp)

这样我们就完成B站弹幕爬虫了。

DeepSeek与豆包热度差异的本质:技术能力vs产品体验 大模型热度并非由参数规模或评测分数直接决定,而是模型能力经工程封装、产品设计、渠道分发和用户心智占领四重转化后的结果。DeepSeek代表开源基座模型路线,以高可控性、可私有化部署和开发者友好性见长,其技术价值在B端场景中通过招投标、私有化集成和微调能力兑现;豆包则立足消费级产品逻辑,依托字节系超级APP生态实现高频触点、零门槛交互与场景化渗透,将AI能力转化为大众可感知的即时效用。二者差异本质是‘基础设施供应商’与‘终端产品厂商’的角色分野——用户不关心谁家模型,只在意是否‘好用、能用、想用’。理解这一分 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第八十六篇 各类应用上云计算 01

数字孪生:核心是实时性不等式(Δ<Δt)与带宽-精度权衡。数学上归结为带约束的非线性优化。预测性维护:从物理退化方程(Paris 定律)出发,结合贝叶斯推断,云端训练用深度时序模型,边缘推理用轻量模型。机器人协同:本质是多商品流 + 动态障碍物,需用图论(冲突检测)+ 最优控制(轨迹平滑)。工业视觉:延迟由四个环节组成,需用排队论分析流水线瓶颈,量化感知是降低延迟的关键。液压/气动系统上云(涉及流体力学、热力学、控制)机械臂力控/阻抗控制上云(涉及动力学、力/位混合控制)

weixin_49199313的博客 201

base64图片解析

大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如:data:image/png;base64,  iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNo8zjsOxCAMBFB/   KEA...

mymy1026的博客 711

【杰理AC696X】ADKEY复用指示灯不定时出现灯不亮或按键失灵的问题

测试SDK版本:《ac696n_soundbox_sdk_v1.5.0-20211217》ADKEY复用指示灯的做法多用于蓝牙小音箱,IC引脚越来越少,复用也就用的越多了,不过,在使用前应评估好功能,因为复用的做法,肯定会牺牲点东西的,如果体验感啥的。 比如这个图,(V-)按键按下时,LED是会一直导通发光的,按不同阻值的按键还有亮度不一致的问题,这样的问题有的客户是不接受的,这就要另寻他法了。某天调好案子,放在一边测试时,发现指示灯不亮了,按键也不起作用,想起之前AC692系列也有类似的问题,很快就定位到

xx842678的博客 1656

图片based64编码解码python代码

【代码】图片based64编码解码python代码。

大模型天花板 690

架构设计之架构治理

架构治理的本质是“用规则约束复杂性,用流程保障落地,用数据驱动优化”先定目标:明确量化的治理目标,避免盲目行动;立标准:建立覆盖分层、选型、接口、拆分的统一规范,奠定治理基础;强评审:通过架构评审把控设计环节,提前规避风险;全流程:将治理规则贯穿设计、开发、测试、部署、运维全生命周期;重保障:通过组织、流程、工具确保治理落地,而非“纸上谈兵”;持续迭代:随业务与技术演进优化治理规则,避免“一劳永逸”。

xiaolyuh的专栏 811

图片边界矢量化-地理配准

无地理和投影信息的JPG图片,通过ArcGIS进行地理配准(Georeferencing)完成数字化边界。

u012727861的博客 1907

java js base64_前端js 生成的base64位图片在后端 java 解析

// 1.需要引入的包import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.O...

weixin_34638409的博客 449

cdh zookeeper未授权访问(安全漏洞)处理

前言: 最近公司在做安全漏洞扫描。发现cdh zookeeper存在未授权访问的问题。 ZooKeeper的节点有5种操作权限: CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写) 注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限 ZooKeeper的身份的认证有4种方式: world:默认方式,相当于全世界都能访问 auth:代表已经认证通过的..

belialxing的专栏 2446

python 如何解析图片

在Python中,可以使用PIL(Python Imaging Library)或其继承库Pillow来解析图片。Pillow是PIL的一个分支,提供了更多功能和支持新版本的Python。以下是一些示例代码,演示如何使用Pillow库解析图片:安装Pillow库首先,您需要安装Pillow库。

weixin_42490599的博客 1135

什么是DHCP Snooping?如何配置DHCP Snooping?

功能描述防护类型防御伪造 DHCP 服务器、避免地址冲突、增强网络安全性使用场景企业园区网、校园网、大型局域网配合机制IP Source Guard、DAI、防止 ARP 欺骗部署难度⭐⭐(简单)“DHCP Snooping,是内网 DHCP 安全防护的第一道门神。” 🛡️。

网络技术联盟站 1267

【XAI】透视深度学习:CNN与Transformer的可解释性方法

深度学习模型的可解释性方法解析:本文探讨了CNN和Transformer两类主流模型的可解释性技术。针对CNN,介绍了显著性图、类激活图(CAM/Grad-CAM)和基于扰动的方法,通过可视化重要像素区域揭示决策依据。对于Transformer,重点分析了注意力机制可视化及其在文本处理中的应用,并介绍了积分梯度等归因方法。文章包含详细的Python实现示例(使用Captum库),涵盖从MNIST图像显著性分析到BERT文本注意力可视化,为初学者提供了可操作的技术指南。这些方法有助于增强模型透明度,提升AI系

u012133341的博客 382

python分析图片内容_Python实现识别图片内容的方法分析

怎样利用Python进行图片分析Python实现文字识别,来看看大牛怎么实现截图当一个人不能拥有的时候,他唯一能做的便是不要忘记。普鲁斯特route('/callback_result', methods = ["POST","GET"]) def callback_result(): try:nm = nmap.PortScanner() instantiate nmap.PortScanner...

weixin_42469649的博客 2913

PCL点云DBSCAN聚类算法:基于密度的点云聚类

核心点是在给定半径内拥有足够多邻居点的点,边界点是在给定半径内没有足够多邻居点但是位于核心点的邻域内的点,噪声点是既不是核心点也不是边界点的点。本文将介绍PCL中的DBSCAN(基于密度的空间聚类应用噪声)算法,用于点云数据的聚类。上述示例代码首先从PCD文件中读取点云数据,并设置了DBSCAN聚类的参数,包括邻域搜索半径(epsilon)和邻域内最小点数(min_points)。需要注意的是,示例代码中的点云数据格式为pcl::PointXYZ,如果使用其他类型的点云数据,需要相应地修改代码。

LpmShell的博客 1239

python爬虫和定位_Python网络爬虫实战,照片定位与B站弹幕!

之前两篇已经说完了如何爬取网页以及如何解析其中的数据,那么今天我们就可以开始第一次实战了。Python资源共享群:626017123这篇实战包含两个内容。* 利用爬虫调用Api来解析照片的拍摄位置* 利用爬虫爬取Bilibili视频中的弹幕关于爬虫调用Api这一说法,其实就是通过get或者post请求携带着参数,将内容发给对方服务器,服务器会根据请求的Api是哪个来进行处理。比如说/delete?...

weixin_39950057的博客 291

基于 YOLOv8 的自动驾驶车辆障碍物检测与避障路径规划

本文探讨基于YOLOv8的自动驾驶车辆障碍物检测与避障路径规划系统。在感知层面,采用YOLOv8模型实现多类别障碍物识别,结合单目视觉距离估计和ByteTrack多目标跟踪算法,完成障碍物的稳定检测与运动状态估计。在路径规划层面,设计分层规划架构,融合全局路径规划与局部避障算法,重点实现Frenet坐标系下的采样优化算法和基于模型预测控制的实时避障轨迹生成。通过完整的代码实现与仿真实验,验证系统在复杂交通场景下的有效性与实时性,为自动驾驶开发者提供从理论到实践的完整技术参考。 关键词:YOLOv8;自动驾驶

huanghm88的专栏 249

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

64位照片解析_Python网络爬虫实战,照片定位与B站弹幕!

之前两篇已经说完了如何爬取网页以及如何解析其中的数据,那么今天我们就可以开始第一次实战了。Python资源共享群:626017123 这篇实战包含两个内容。* 利用爬虫调用Api来解析照片的拍摄位置* 利用爬虫爬取Bilibili视频中的弹幕 关于爬虫调用Api这一说法,其实就是通过get或者post请求携带着参数,将内容发给对方服务器,服务器会根据请求的Api是哪个来进行处理。 比如说/del...

weixin_36115496的博客 224

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

python爬虫和定位_Python网络爬虫实战(三)照片定位与B站弹幕

之前两篇已经说完了如何爬取网页以及如何解析其中的数据,那么今天我们就可以开始第一次实战了。这篇实战包含两个内容。* 利用爬虫调用Api来解析照片的拍摄位置* 利用爬虫爬取Bilibili视频中的弹幕关于爬虫调用Api这一说法,其实就是通过get或者post请求携带着参数,将内容发给对方服务器,服务器会根据请求的Api是哪个来进行处理。比如说/delete?id=2和/save?id=1&n...

weixin_39633102的博客 229

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

64位照片解析_Python网络爬虫实战(三)照片定位与B站弹幕

之前两篇已经说完了如何爬取网页以及如何解析其中的数据,那么今天我们就可以开始第一次实战了。这篇实战包含两个内容。* 利用爬虫调用Api来解析照片的拍摄位置* 利用爬虫爬取Bilibili视频中的弹幕关于爬虫调用Api这一说法,其实就是通过get或者post请求携带着参数,将内容发给对方服务器,服务器会根据请求的Api是哪个来进行处理。比如说/delete?id=2和/save?id=1&n...

weixin_33314238的博客 246

B站小甲鱼零基础python视频P57爬取煎蛋网OOXX妹纸图代码修改

问题描述 在B站看[小甲鱼]零基础入门学习PythonP57集时遇到了一些问题,现在煎蛋网的的图片每一页的网址和视频里的不太一样,看弹幕有的说能爬,有的说不能爬,也没有标明日期,当时挺懵逼的,不知道该怎么办,硬着头皮看到最后,发现有弹幕说是用了base64加密,其它弹幕反响不错,感觉挺靠谱的,就百度了一下,最后终于成功爬取。小甲鱼的视频看到这里,这应该是第一个让我小有成就的实例,在这里分享给大家,希望和我遇到同样问题的朋友都能完成并继续学习下去,加油诸位。 具体参考了这篇文章https://blog.csd

hahah1024的博客 1万+

Python创意编程:用代码实现浪漫表白程序的技术实践

创意编程是将编程技术应用于非传统领域,通过代码实现个性化表达的一种实践方式。其核心原理在于利用编程语言的逻辑控制、数据处理和图形渲染能力,将抽象创意转化为可交互的数字作品。这种技术不仅能够锻炼开发者的综合能力,更能在工程实践中融入情感表达,创造出独特的数字礼物。在应用场景上,创意编程常被用于制作个性化贺卡、互动艺术装置以及情感化应用。本文以Python为例,探讨如何结合命令行动画、图形界面开发与程序打包等技术,实现一个融合了动态效果和交互体验的【表白程序】,其中涉及【tkinter】库的GUI构建与事件处理

weixin_33896726的博客 372

【Reading Notes】(4)Favorite Articles from 2021

其实波尔象限与巴斯德象限,在具体科研实践时其实是一样的,就是「把问题的底层原理搞清楚」,只是问题的来源有所不同。美国普林斯顿大学的唐纳德 · 斯托克斯(Donald E. Stokes)通过 4 个象限定义了不同的研究类型,其中基础研究包括纯基础研究(波尔象限)与由应用驱动的基础研究(巴斯德象限)公式认为,任何重复的自然图案,都是通过两种具有特定特征的事物(如分子、细胞)进行相互作用而产生的。(左上)相机画面,(左下)时间轴,(中)AI捕捉的选手动作,(右)每种技术的「裁判员看点」

bryant_meng 391

语义切片知识库:跨平台信息的认知锚定系统

知识库本质是认知操作系统的延伸,而非简单信息存储。其核心在于理解内容的语义结构——标题承载命题、正文提供论据、评论反映反例、转发语浓缩摘要。传统全量抓取方案因忽略载体差异与语义层级,导致信息失联与检索幻觉。本方案以‘语义切片’为基本单元,结合载体感知过滤、认知单元分解与图谱锚定技术,实现公众号加粗段落、视频关键帧+字幕+弹幕三重对齐、网页主干内容净化等精准捕获能力。它支撑RAG增强检索、个人方法论沉淀与团队知识协同等高阶场景,让散落于微信、B站、知乎的碎片信息,在统一认知坐标系中自然聚类、动态关联。

weixin_30719711的博客 513

数字时代如何解构经典语义:公羊学异常切片方法论

‘正名’是先秦礼制秩序的语言接口,本质是‘名’与‘实’的动态匹配;其原理在当代演变为对词汇历史语境、语法功能与情感权重的三重压力测试。这种语义校准技术具有显著的工程实践价值——它不追求复原古义,而是识别概念在算法推荐、弹幕文化、产品命名等新介质中的迁移轨迹与空转信号。典型应用场景包括网络热词溯源、跨媒介话语分析、组织话语审计及人文向AI提示词设计。本文聚焦‘异常切片’这一轻量级、可验证、跨平台交付的语义分析范式,融合Python文本清洗、BERT语义相似度计算与CLIP图文匹配等数字工具链。

读书、思考、生活 515

Gemini原生多模态AI入门:零基础玩转感官协同认知引擎

多模态AI是指能同时理解文本、图像、音频、视频等多种信息形式的智能系统,其核心在于跨模态语义对齐与协同推理,而非简单格式支持。Gemini作为谷歌推出的原生多模态大模型,采用统一token化器实现文字、像素、声谱等信号在同一体系下的联合表征,显著提升视觉理解、手写识别、会议分析等任务的鲁棒性与上下文穿透力。相比传统‘文字优先’架构,它更贴近人类感知逻辑,在教育辅导、职场提效、创意生成、跨语言协作等真实场景中展现出强容错交互与本土化语义理解能力——尤其在中文教学表达、模糊图片解析、动态旅行决策等高频需求上优势

hqmln的博客 494

豆包2.0深度解析:中文多模态AI如何实现生活化协作者跃迁

大模型已从‘能回答问题’进入‘懂生活语境’的新阶段。多模态AI不再仅指图像识别能力,而是文本、语音、PDF、实时数据等多源信息在统一语义空间中的联合理解与协同响应;其技术价值在于降低人机协作的认知负荷——通过任务导向的模型分治(Pro/Lite/Mini/Code)、跨模态向量对齐、状态机驱动的Agent架构,真正实现‘说人话、办人事’。典型应用场景覆盖自媒体内容生成、扫描文档精准解析、本地化实时服务查询及轻量级代码自动化,尤其在中文口语理解、OCR鲁棒性、边缘离线推理和城市API融合方面形成差异化优势。

aigui1439的博客 456
上一篇: 从0到1教你用Python来爬取整站天气网!
下一篇: 日常代码笔记,Python的推导式,性能评估!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值