爬取抖音视频点赞量收藏量
时间: 2025-01-28 16:08:46 浏览: 309
### 使用Python爬取抖音视频的点赞数和收藏数
为了获取抖音视频的具体互动数据(如点赞数、收藏数),通常有两种主要方法:通过官方API接口访问或利用网络爬虫技术。然而,直接调用抖音官方API可能需要特定权限或许可证,并不适合所有人使用。
对于后者,在实际操作过程中存在一些挑战[^2]。例如,自动化模拟用户行为来滚动加载更多内容并保持会话状态较为复杂;同时,由于平台的安全机制不断更新,简单地解析HTML页面难以稳定获得所需信息。因此,更可行的方式是从HTTP请求层面入手分析目标资源的位置。
#### 方法一:基于浏览器开发者工具捕获AJAX请求
1. 打开Chrome/Firefox等现代Web浏览器;
2. 访问抖音PC端网站并定位至感兴趣的板块;
3. 利用F12打开开发者模式下的Network面板监控流量;
4. 查找携带了`video/aweme/v1/feed/?...`样式的URL路径,这往往是返回JSON格式的数据流入口之一;
5. 解码响应体中的json字符串即可得到包括但不限于作品ID(`aweme_id`)、作者昵称(`nickname`)以及统计字段在内的结构化对象集合。
```python
import requests
from urllib.parse import urlencode
def fetch_video_stats(vid):
base_url = 'https://www.douyin.com/web/api/v2/aweme/iteminfo/'
params = {
'item_ids': vid,
'_signature': '', # 这里省略签名算法细节
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
'Referer': f'https://v.douyin.com/{vid}/'
}
url = '{}?{}'.format(base_url, urlencode(params))
resp = requests.get(url=url, headers=headers)
if resp.status_code != 200:
raise Exception(f'Failed to load page {url}')
data = resp.json()
stats = data['item_list'][0]['statistics']
likes_count = stats['digg_count'] # 点赞数量
collect_count = stats['collect_count'] # 收藏次数
return {'likes': likes_count, 'collections': collect_count}
```
此脚本展示了如何构建一个简单的函数去查询单个视频的相关统计数据。需要注意的是,上述代码片段仅为示意目的编写,真实环境中还需要处理诸如身份验证令牌(_signature)生成等问题。
#### 方法二:借助Scrapy框架开发分布式爬虫项目
当面对更大规模的任务需求时,则可以考虑采用更加专业的解决方案——Scrapy。这是一种专为高效抓取互联网公开资料设计的强大库,支持异步I/O模型从而提高并发性能。下面给出一段简化后的Spider模板:
```python
import scrapy
from ..items import DouyinVideoStatItem
class VideoStatsSpider(scrapy.Spider):
name = "dy_stat"
allowed_domains = ["douyin.com"]
start_urls = ['http://example.com/video/list']
def parse(self, response):
video_links = response.css('.video-item::attr(href)').extract()
for link in video_links[:]:
yield scrapy.Request(
url=link,
callback=self.extract_data_from_page
)
def extract_data_from_page(self, response):
item = DouyinVideoStatItem()
try:
json_data = eval(response.text.strip().replace('true', 'True').replace('false', 'False'))
stat_info = json_data['body']['detail'].get('stat')
item['like_num'] = int(stat_info.get('diggCount')) # 获取点赞数目
item['bookmark_num'] = int(stat_info.get('collectCount'))# 获取收藏数目
yield item
except KeyError as e:
print(e)
```
这段程序定义了一个名为`VideoStatsSpider`的新类继承自`scrapy.Spider`基类,并实现了两个核心回调方法用于遍历列表页链接及提取详情页内的关键属性值。此外还引入了之前提到过的Items容器以便于后续持久化保存所收集的信息。
阅读全文
相关推荐













