我正试图通过网络抓取和curl来获取instagram帐户的关注者数量。使用他们的API可能更容易,但我想知道为什么这不起作用,因为在许多情况下,我是通过HTML获得数据的。
static $url='https://www.instagram.com/cats_of_instagram/';
function getUrlContent($url){
try {
$curl_connection = curl_init($url);
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
//Data are stored in $data
$data = (curl_exec($curl_connection));
$position = strpos($data,"<span data-reactid='".0.1.0.0:0.1.3.1.0.2'"> followers</span>");
print_r($position);
curl_close($curl_connection);
} catch(Exception $e) {
return $e->getMessage();
}
}
问题是函数strpos
不返回位置。
$position = strpos($data,"<span data-reactid='".0.1.0.0:0.1.3.1.0.2'"> followers</span>");
你不能那样做。
页面加载后,您要查找的元素由javascript呈现。
curl
不等待脚本运行(也不运行任何脚本)。它只是返回html。
您可以通过打印$data
轻松验证这一点。或者通过查看页面的来源。
要"查看"您要查找的元素,您需要使用DOM检查器。