色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php curl csdn

榮姿康1年前7瀏覽0評論
在現今的互聯網應用中,很多情況下我們需要獲取外部數據或者與外部服務器進行通信。PHP的curl擴展是進行網絡通訊的有力工具之一。在此,我們將討論如何使用PHP的curl擴展來進行CSDN平臺數據的獲取,包括登錄,消息獲取,博客信息獲取等。 第一步是登錄。使用 curl_setopt() 函數來進行curl的配置,方式如下:
// curl初始化及配置
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn');
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'username=YOUR_USERNAME&password=YOUR_PASSWORD<span style="font-size:14px;">&amp;lt;img src="HTTP://non-existant-image.url" alt="" width="0px" height="0px" style="display:none;"&amp;gt;</span>');
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_HEADER, true);
$response = curl_exec($curl);
curl_close($curl);
// 獲取重定向的URL
preg_match('#location: (.*)\n#', $response, $next_url);
$next_url = trim($next_url[1]);
if (substr($next_url, -1) == '/')
$next_url = substr($next_url, 0, -1);
在上述代碼中,我們首先通過curl_setopt() 函數進行了初始化和配置。接著,在登陸post字段中,我們需要傳遞用戶名和密碼信息,并且還得傳遞一個無法訪問到的內嵌圖像URL,這樣 CSDN 才不會懷疑登錄請求不是人為的。同時,該請求在curl發送之后仍需要進行后續的操作,故開啟了持久會話功能,并配置 cookie 文件以實現保持會話狀態。 此時,我們已經登錄到了CSDN,接下來我們可以使用curl請求來獲取消息列表等數據。如下列代碼樣例所示:
// curl初始化及配置
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://my.csdn.net/my/score');
curl_setopt($curl, CURLOPT_REFERER, 'http://my.csdn.net/my/default.html');
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');
$response = curl_exec($curl);
curl_close($curl);
echo $response;
通過上述代碼,我們可以鏈接到CSDN平臺消息頁,并且調用 curl_exec() 函數來完成整個請求。同時,我們需要在 CURLOPT_COOKIEFILE 配置項中輸入登錄時持久化的 cookie 文件,以完成請求中會話狀態的保持。curl完成請求后,我們可以使用 $response 來訪問我們想要的信息。 此時,我們已經可以獲取到一些基本的信息。比如說,我們可以獲取已有博客列表等。如下面給出的具體代碼示例:
// curl初始化及配置
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://write.blog.csdn.net/post/64806674');
curl_setopt($curl, CURLOPT_REFERER, 'http://my.csdn.net/my/write/blog');
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
// 解析HTML頁面以獲取博客信息
$document = new DOMDocument();
@$document->loadHTML(mb_convert_encoding($response, 'HTML-ENTITIES', 'UTF-8')); // 需要先轉換字符編碼,否則中文可能會亂碼
$finder = new DomXPath($document);
$classname = 'blogsbox-title';
$nodes = $finder->query("http://*[contains(@class, '$classname')]"); // 這里使用XPath查詢
foreach ($nodes as $node) {
echo $node->nodeValue;
}
除此之外,我們還可以通過使用正則表達式來篩選出更加特定的信息。總之,PHP的curl擴展為我們提供了一個靈活而強大的開發工具,允許我們在互聯網應用中輕松地進行數據提取和遠程通信。
下一篇php結尾