如何获取Facebook页面帖子的点赞时间?能否通过Like_ID推测或估算?
好问题!我来帮你梳理下关于抓取Facebook点赞时间的可行方案:
能否通过Like_ID确定点赞时间?
答案是可以估算,甚至得到精确到秒的UTC时间。Facebook的Like_ID属于它的Object ID体系,这个ID的前40位二进制(对应10位十六进制字符)其实是从2010年1月1日00:00:00 UTC开始计算的秒数。通过解析这部分内容,就能反推出点赞的大致时间。
举个Python的实现例子:
import datetime def get_like_time_from_id(like_id): # 提取Like_ID的前10位十六进制字符 timestamp_hex = like_id[:10] # 转成十进制秒数 seconds_since_epoch = int(timestamp_hex, 16) # Facebook的时间起始点是2010-01-01 UTC base_time = datetime.datetime(2010, 1, 1, tzinfo=datetime.timezone.utc) # 计算点赞时间 like_time = base_time + datetime.timedelta(seconds=seconds_since_epoch) return like_time # 测试示例 sample_like_id = "1892345670abcdef1234" print(get_like_time_from_id(sample_like_id)) # 输出类似:2024-05-20 17:30:45+00:00
这个方法的精度是秒级,足够满足你的需求。不过要注意:如果未来Facebook修改Object ID的生成规则,这个方法可能会失效,但目前是稳定可用的。
其他抓取点赞时间的替代方法
如果解析Like_ID的方式不够满足你的需求,还有这些更直接的方案:
合规优先:使用Facebook Graph API
如果你有合法的开发者权限(比如页面授权、企业账号),直接调用Graph API的/{post-id}/likes接口,加上fields=created_time参数,就能直接获取到精确的UTC点赞时间。比如请求路径类似:GET /v19.0/{post-id}/likes?fields=created_time。记得严格遵守Facebook的API服务条款,避免账号被限制。抓取页面静态/动态内容
对于公开可访问的页面,你可以:- 用HTML解析库(比如Python的BeautifulSoup、JS的Cheerio)提取页面中隐藏的时间属性:有些点赞条目会把时间放在
data-tooltip-content或者aria-label里,格式类似"John Doe liked this on May 20, 2024 at 5:30 PM UTC",你可以用正则表达式提取并转换为标准时间格式。 - 用无头浏览器(比如Puppeteer、Playwright)处理动态加载内容:Facebook的点赞列表通常是滚动加载的,无头浏览器可以模拟用户滚动行为,等时间元素渲染完成后再抓取。这种方法要注意反爬机制,比如IP轮换、避免频繁请求。
- 用HTML解析库(比如Python的BeautifulSoup、JS的Cheerio)提取页面中隐藏的时间属性:有些点赞条目会把时间放在
内容的提问来源于stack exchange,提问作者Ruan




