【问题标题】:How to extract user account name and video id from a shortened tiktok URL?如何从缩短的 tiktok URL 中提取用户帐户名称和视频 ID?
【发布时间】:2020-06-29 08:56:46
【问题描述】:

我正在尝试从缩短的 URL 中获取 tiktok 视频的 URL,以便提取海报的 @username 和帖子的视频 ID。我遇到的一些缩短 URL 的例子似乎是在 Facebook/Twitter 上以“m.tiktok.com”或更具体地说是“https://vm.tiktok.com/pF6GGf/”的形式共享的 URL。该链接最终重定向到“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 会注意到并减慢我的流程。

【问题讨论】:

    标签: python web-scraping url-shortener


    【解决方案1】:

    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
    

    最后,您可以使用正则表达式找到用户名和视频 ID。

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

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

    额外:现代网络服务通常非常聪明,有时可能有不同的机制来阻止爬取活动。如果您计划进行大量抓取(我假设有效/合法),您还必须考虑请求 URL 页面的速率(以及许多其他事情)。如果您需要管理更多用户代理,您可能会发现这个 pip 包很有帮助 (fake-useragent)。

    【讨论】:

      猜你喜欢
      • 2021-04-22
      • 1970-01-01
      • 2015-07-22
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      相关资源
      最近更新 更多