如何从缩短的tiktok URL中提取用户帐户名和视频id?

2024-10-01 22:44:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个缩短的URL中获取tiktok视频的URL,以便提取海报的@username和帖子的视频id。我遇到的一些缩短URL的例子似乎是以“m.tiktok.com”或更具体的形式出现在Facebook/Twitter上的共享URL,”https://vm.tiktok.com/pF6GGf/". 此链接最终重定向到“https://www.tiktok.com/@blessy2flex/video/6796374554391448838…”。有没有办法只使用缩短的URL来获取此URL

我希望能够从实际URL中显示的缩短URL中获取用户名(@blessy2flex)和视频id(6796374554391448838)。我已尝试跟踪重定向,但最终得到的URL“https://m.tiktok.com/v/6833793010149412101.html...“是这样的,显然是不一样的

我也尝试过像Selenium这样的方法,它实际上最终给了我原始视频页面的HTML,在其中我可以通过搜索实际的HTML找到用户名和视频id,但这种方法似乎没有太大的可扩展性,因为我确信tiktok会注意到这一点并减慢我的进程


Tags: 方法httpscomidurl视频htmlusername
1条回答
网友
1楼 · 发布于 2024-10-01 22:44:03

TikTok可能没有重定向正确的URL,因为它正在检测您的User-Agent。如果您使用一些“类似浏览器的”User-Agent更新头文件,它应该可以工作

以下是您解决问题的方法

import re
import requests

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

url = 'https://vm.tiktok.com/pF6GGf/'
response = requests.get(url, headers=headers)

print(response.url) # the correct url with the username

最后,您可以使用regex找到用户名和视频id

re.findall(r'(@[a-zA-z0-9]*)\/.*\/([\d]*)?',response.url)

OUTPUT: [('@blessy2flex', '6796374554391448838')]

额外:现代Web服务通常非常智能,有时可能有不同的机制来阻止爬行活动。如果你计划进行大量的爬网(我认为是有效的/合法的),你还必须考虑到你请求URL页面的速率(在许多其他事情中)。如果您需要管理更多的用户代理,您可能会发现这个pip包非常有用(fake-useragent

相关问题 更多 >

    热门问题