使用requests.get获取TikTok视频页HTML返回b''的问题求助
解决TikTok视频页requests返回空内容的问题
问题原因
TikTok视频页的反爬机制比首页更严格,仅靠User-Agent无法通过验证——即使请求返回200状态码,也会返回空内容。这是因为平台识别出了非浏览器的爬虫请求,或者页面内容需要JavaScript动态渲染,而requests只能获取静态HTML。
解决方案
1. 补充完整请求头
除了User-Agent,还需要添加Cookie、Referer、Accept-Language等浏览器真实请求头信息(这些信息可以从你自己浏览器访问TikTok视频页时的请求头里复制)。示例代码:
import requests headers = { 'user-agent': '你的浏览器User-Agent', 'cookie': '从浏览器复制的TikTok Cookie', 'referer': 'https://www.tiktok.com/', 'accept-language': 'zh-CN,zh;q=0.9' } page = requests.get("https://www.tiktok.com/@thatlittlepuff/video/7160116843611475246", headers=headers) print(page.content.decode('utf-8'))
2. 使用Session维持会话
先请求TikTok首页获取有效会话Cookie,再请求视频页,模拟真实用户的访问流程:
import requests headers = { 'user-agent': '你的浏览器User-Agent' } session = requests.Session() # 先访问首页获取会话Cookie session.get("https://www.tiktok.com/", headers=headers) # 再请求目标视频页 page = session.get("https://www.tiktok.com/@thatlittlepuff/video/7160116843611475246", headers=headers) print(page.content.decode('utf-8'))
3. 用浏览器渲染工具获取动态内容
TikTok视频页是单页应用,核心内容靠JavaScript动态加载,requests无法获取这类内容。可以用Playwright或Selenium模拟浏览器渲染:
以Playwright为例,先安装依赖:pip install playwright,再运行playwright install chrome,然后执行代码:
from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(headless=False) page = browser.new_page() page.goto("https://www.tiktok.com/@thatlittlepuff/video/7160116843611475246") html = page.content() print(html) browser.close()
内容的提问来源于stack exchange,提问作者Centrals
相关产品推荐
相关产品推荐

