摘要:前言目前還沒有開放,年的時候高陽大大說有計劃,雖然那會我還沒用用隨便寫了一個獲取某個標簽下信息的代碼,沒什么技術含量,用來定時獲取目的是如果有問題可以解決就幫助解決一下,或者是廣告的話可以進行舉報獲取主要獲取標簽動態下的就可以了,包含了技術
前言
目前SegmentFault還沒有開放API,17年的時候高陽大大說有計劃,雖然那會我還沒用SegmentFault
用PHP隨便寫了一個獲取某個標簽下信息的代碼,沒什么技術含量,用來定時獲取
目的是如果有問題可以解決就幫助解決一下,或者是廣告的話可以進行舉報
獲取URL主要獲取標簽動態下的就可以了,包含了技術問答和專欄文章
標簽動態 https://segmentfault.com/t/*
技術問答 https://segmentfault.com/t/*/questions
專欄文章 https://segmentfault.com/t/*/blogs
XPath節點PHP使用XPath采集也是還可以的,也相對簡單
標簽動態
標題 //h4/a/text()
鏈接 //h4/a/@href
技術問答
仔細點的話可以帶一個class屬性
標題 //h2[@class="title"]/a/text()
鏈接 //h2[@class="title"]/a/@href
專欄文章
標題 //h2/a/text()
鏈接 //h2/a/@href
效果截圖 使用需要補全代碼中的相關信息,URL、XPath節點以及json文件路徑
可選擇使用 @Easy 的 PushBear 進行一對多推送,需要補全key
crontab定時crontab定時任務30分鐘一次,獲取第一頁的信息
*/30 * * * * php /www/wwwroot/tag.php >> /tmp/sf.logPHP代碼
loadHTML($html); // 使該HTML規范化 $dom->normalize(); // 用DOMXpath加載DOM,用于查詢 $xpath = new DOMXPath($dom); // 獲取對應的xpath數據 $title_hrefs = $xpath->query($title_xpath); // 標題 $data = []; for ($i = 0; $i < $title_hrefs->length; $i++) { $href = $title_hrefs->item($i); $title = $href->nodeValue; $data[$i]["title"] = $title; } // 獲取對應的xpath數據 $url_hrefs = $xpath->query($url_xpath); // 鏈接 for ($i = 0; $i < $url_hrefs->length; $i++) { $href = $url_hrefs->item($i); $url = $href->nodeValue; $data[$i]["url"] = "https://segmentfault.com".$url; } $json = json_encode($data); // 判斷文件是否存在 if (file_exists($json_path)) { // 存在 $old = file_get_contents($json_path); // 文件不同 if ($old != $json) { // 替換掉 寫新文件 file_put_contents($json_path, $json); $oldInfo = json_decode($old, true); // 獲取差值 $data = getDiffArrayByTitle($data, $oldInfo); } else { // 相同就不發了 echo date("Y-m-d H:i:s", time()). "內容相同".PHP_EOL; return; } } else { // 不存在 寫文件 file_put_contents($json_path, $json); } $str = ""; foreach ($data as $key => $item) { $num = $key + 1; $str .= "{$num}. [{$item["title"]}]({$item["url"]}) "; } // 推送 if (!empty($key)) { echo sendByBear("***標簽動態", $str); } function getDiffArrayByTitle($arr1, $arr2, $pk="title"){ $res = []; foreach($arr2 as $item) $tmpArr[$item[$pk]] = $item; foreach($arr1 as $v) if(! isset($tmpArr[$v[$pk]])) $res[] = $v; return $res; } function sendByBear($text, $desp = "", $key = "") { $postData = http_build_query( array( "text" => $text, "desp" => $desp, "sendkey" => $key ) ); $opts = array("http" => array( "method" => "POST", "header" => "Content-type: application/x-www-form-urlencoded", "content" => $postData ) ); $context = stream_context_create($opts); $result = file_get_contents("https://pushbear.ftqq.com/sub", false, $context); return $result; }結語
放個Github倉庫鏈接,如果本文有侵權思否官方可以刪除
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31018.html
摘要:結論居首位,緊隨其后,位列第三。數據庫方面問題最多的還是。在各種技術名詞的標簽下,還冒出一個程序員標簽,排名第位。 結論 JavaScript居首位,HTML5緊隨其后,Python位列第三。 注:數據來源于569頁標簽頁面的11,380 條記錄 showImg(https://segmentfault.com/img/bVXMRf?w=1178&h=548);showImg(http...
摘要:結論居首位,緊隨其后,位列第三。數據庫方面問題最多的還是。在各種技術名詞的標簽下,還冒出一個程序員標簽,排名第位。 結論 JavaScript居首位,HTML5緊隨其后,Python位列第三。 注:數據來源于569頁標簽頁面的11,380 條記錄 showImg(https://segmentfault.com/img/bVXMRf?w=1178&h=548);showImg(http...
摘要:本教程內容已過時,更新版教程請訪問博客開發入門教程。表示降序排列,默認是升序排列。學習小組簡介學習小組是一個促進新手互相學習互相幫助的組織。我們會將每周的詳細開發文檔和代碼通過郵件列表發出。 本教程內容已過時,更新版教程請訪問: django 博客開發入門教程。 通過前四周的時間我們開發了一個簡單的個人 Blog,教程地址: 第一周:Django 學習小組:博客開發實戰第一周教程 ——...
摘要:由此可以看出,同源策略確實是必不可少的,那么它會帶來哪些限制呢和無法讀取。由于瀏覽器的同源策略,在網頁端出現了這個跨域的問題,然而我們發現,所有的屬性并沒有受到相關的限制,比如等。 本文按照政治問答題必備套路分為以下3個部分: 為什么要跨域? 跨域是什么? 如何實現跨域? Section1、為什么要跨域? 自古以來(1995年起),為了用戶的信息安全,瀏覽器就引入了同源策略。那么同...
摘要:國內各大公司都已經投入使用,在一些常見的網站,如淘寶騰訊小米等移動站點,隨處可見其蹤影。變革之騰訊手機淘寶的設計與實現前端亂燉適配總結樣式重置上文已提及,這里推薦閱讀同學寫的專題文章。 前言 CSS代碼難維護眾所皆知。 為一個元素設置樣式的方式可以通過定義的class、定義的id、元素的標簽名、元素的屬性等選擇器以及這些選擇器的組合來實現; 作用于某個元素上的樣式又可能來自單個樣式規...
閱讀 2323·2023-04-26 00:28
閱讀 3067·2019-08-30 15:55
閱讀 2742·2019-08-30 12:47
閱讀 1550·2019-08-29 11:04
閱讀 3150·2019-08-28 18:14
閱讀 945·2019-08-28 18:11
閱讀 1671·2019-08-26 18:36
閱讀 3383·2019-08-23 18:21