【问题标题】:Scrape data from TikTok?从 TikTok 抓取数据?
【发布时间】:2019-11-19 19:51:06
【问题描述】:

所以我试图从 TikTok抓取数据,但是出现了问题。 有时它会返回整页,有时是这样:

{"statusCode":200,"contentType":"text/html","content":""}

甚至有时会返回

Redirecting to (tiktok url)

它实际上从未重定向到提到的 URL。

有什么方法可以不断抓取主页? 这是我当前的代码:

$pageurl = "https://www.tiktok.com/@".$_GET["username"];
$ch = @curl_init($pageurl);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240');
    
$result = curl_exec($ch);
echo $result;
curl_close($ch);

【问题讨论】:

    标签: php curl screen-scraping


    【解决方案1】:

    使用 CURL 进行请求时,默认情况下不遵循重定向。要使其遵循重定向,需要 FOLLOWLOCATION 设置,如下所示:

    $ch = @curl_init($pageurl);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240');
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    

    对于空响应,您可能遇到错误,因此您应该检查一下:

    if (curl_errno($ch)) {
        echo "Error: " . curl_error($ch);
    }
    

    或者可能只是错误已经结束,您应该重试,直到收到非空响应。

    【讨论】:

    • 效果很好,但是,一段时间后它仍然返回 {"statusCode":200,"contentType":"text/html","content":""} 而不是主页。为什么会这样?
    • 如果没有错误并且您收到了200 响应,那么这似乎就是他们发回的内容。我猜它们要么是在限制你的速率,要么是检测到你正在抓取它们。
    猜你喜欢
    • 2020-04-28
    • 2020-09-24
    • 2018-06-10
    • 2018-06-06
    • 2021-07-08
    • 2016-10-25
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多