dhs*_*ong 2 python url-shortener web-scraping
我正在尝试从缩短的 URL 中获取 tiktok 视频的 URL,以便提取海报的@用户名和帖子的视频 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)。我尝试过跟踪重定向,但最终得到的网址是“https://m.tiktok.com/v/6833793010149412101.html...”,这显然不一样。
我也尝试过像 Selenium 这样的东西,它实际上最终给了我原始视频页面的 HTML,在其中我可以通过搜索实际的 HTML 来找到用户名和视频 id,但这种方法似乎不太可扩展因为我确信抖音会注意到并减慢我的进程。
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
Run Code Online (Sandbox Code Playgroud)
最后,您可以使用正则表达式找到用户名和视频 ID。
re.findall(r'(@[a-zA-z0-9]*)\/.*\/([\d]*)?',response.url)
OUTPUT: [('@blessy2flex', '6796374554391448838')]
额外:现代网络服务通常非常智能,有时可能有不同的机制来阻止爬行活动。如果您计划进行大量爬行(我假设有效/合法),您还必须考虑请求 URL 页面的速率(以及许多其他事项)。如果您需要管理更多用户代理,您可能会发现这个 pip 包很有帮助(fake-useragent)。
归档时间: |
|
查看次数: |
9070 次 |
最近记录: |