摘要:前言目前還沒有開放,年的時(shí)候高陽大大說有計(jì)劃,雖然那會(huì)我還沒用用隨便寫了一個(gè)獲取某個(gè)標(biāo)簽下信息的代碼,沒什么技術(shù)含量,用來定時(shí)獲取目的是如果有問題可以解決就幫助解決一下,或者是廣告的話可以進(jìn)行舉報(bào)獲取主要獲取標(biāo)簽動(dòng)態(tài)下的就可以了,包含了技術(shù)
前言
目前SegmentFault還沒有開放API,17年的時(shí)候高陽大大說有計(jì)劃,雖然那會(huì)我還沒用SegmentFault
用PHP隨便寫了一個(gè)獲取某個(gè)標(biāo)簽下信息的代碼,沒什么技術(shù)含量,用來定時(shí)獲取
目的是如果有問題可以解決就幫助解決一下,或者是廣告的話可以進(jìn)行舉報(bào)
獲取URL主要獲取標(biāo)簽動(dòng)態(tài)下的就可以了,包含了技術(shù)問答和專欄文章
標(biāo)簽動(dòng)態(tài) https://segmentfault.com/t/*
技術(shù)問答 https://segmentfault.com/t/*/questions
專欄文章 https://segmentfault.com/t/*/blogs
XPath節(jié)點(diǎn)PHP使用XPath采集也是還可以的,也相對(duì)簡單
標(biāo)簽動(dòng)態(tài)
標(biāo)題 //h4/a/text()
鏈接 //h4/a/@href
技術(shù)問答
仔細(xì)點(diǎn)的話可以帶一個(gè)class屬性
標(biāo)題 //h2[@class="title"]/a/text()
鏈接 //h2[@class="title"]/a/@href
專欄文章
標(biāo)題 //h2/a/text()
鏈接 //h2/a/@href
效果截圖 使用需要補(bǔ)全代碼中的相關(guān)信息,URL、XPath節(jié)點(diǎn)以及json文件路徑
可選擇使用 @Easy 的 PushBear 進(jìn)行一對(duì)多推送,需要補(bǔ)全key
crontab定時(shí)crontab定時(shí)任務(wù)30分鐘一次,獲取第一頁的信息
*/30 * * * * php /www/wwwroot/tag.php >> /tmp/sf.logPHP代碼
loadHTML($html); // 使該HTML規(guī)范化 $dom->normalize(); // 用DOMXpath加載DOM,用于查詢 $xpath = new DOMXPath($dom); // 獲取對(duì)應(yīng)的xpath數(shù)據(jù) $title_hrefs = $xpath->query($title_xpath); // 標(biāo)題 $data = []; for ($i = 0; $i < $title_hrefs->length; $i++) { $href = $title_hrefs->item($i); $title = $href->nodeValue; $data[$i]["title"] = $title; } // 獲取對(duì)應(yīng)的xpath數(shù)據(jù) $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 { // 相同就不發(fā)了 echo date("Y-m-d H:i:s", time()). "內(nèi)容相同".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("***標(biāo)簽動(dòng)態(tài)", $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; }結(jié)語
放個(gè)Github倉庫鏈接,如果本文有侵權(quán)思否官方可以刪除
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/31018.html
摘要:結(jié)論居首位,緊隨其后,位列第三。數(shù)據(jù)庫方面問題最多的還是。在各種技術(shù)名詞的標(biāo)簽下,還冒出一個(gè)程序員標(biāo)簽,排名第位。 結(jié)論 JavaScript居首位,HTML5緊隨其后,Python位列第三。 注:數(shù)據(jù)來源于569頁標(biāo)簽頁面的11,380 條記錄 showImg(https://segmentfault.com/img/bVXMRf?w=1178&h=548);showImg(http...
摘要:結(jié)論居首位,緊隨其后,位列第三。數(shù)據(jù)庫方面問題最多的還是。在各種技術(shù)名詞的標(biāo)簽下,還冒出一個(gè)程序員標(biāo)簽,排名第位。 結(jié)論 JavaScript居首位,HTML5緊隨其后,Python位列第三。 注:數(shù)據(jù)來源于569頁標(biāo)簽頁面的11,380 條記錄 showImg(https://segmentfault.com/img/bVXMRf?w=1178&h=548);showImg(http...
摘要:本教程內(nèi)容已過時(shí),更新版教程請(qǐng)?jiān)L問博客開發(fā)入門教程。表示降序排列,默認(rèn)是升序排列。學(xué)習(xí)小組簡介學(xué)習(xí)小組是一個(gè)促進(jìn)新手互相學(xué)習(xí)互相幫助的組織。我們會(huì)將每周的詳細(xì)開發(fā)文檔和代碼通過郵件列表發(fā)出。 本教程內(nèi)容已過時(shí),更新版教程請(qǐng)?jiān)L問: django 博客開發(fā)入門教程。 通過前四周的時(shí)間我們開發(fā)了一個(gè)簡單的個(gè)人 Blog,教程地址: 第一周:Django 學(xué)習(xí)小組:博客開發(fā)實(shí)戰(zhàn)第一周教程 ——...
摘要:由此可以看出,同源策略確實(shí)是必不可少的,那么它會(huì)帶來哪些限制呢和無法讀取。由于瀏覽器的同源策略,在網(wǎng)頁端出現(xiàn)了這個(gè)跨域的問題,然而我們發(fā)現(xiàn),所有的屬性并沒有受到相關(guān)的限制,比如等。 本文按照政治問答題必備套路分為以下3個(gè)部分: 為什么要跨域? 跨域是什么? 如何實(shí)現(xiàn)跨域? Section1、為什么要跨域? 自古以來(1995年起),為了用戶的信息安全,瀏覽器就引入了同源策略。那么同...
摘要:國內(nèi)各大公司都已經(jīng)投入使用,在一些常見的網(wǎng)站,如淘寶騰訊小米等移動(dòng)站點(diǎn),隨處可見其蹤影。變革之騰訊手機(jī)淘寶的設(shè)計(jì)與實(shí)現(xiàn)前端亂燉適配總結(jié)樣式重置上文已提及,這里推薦閱讀同學(xué)寫的專題文章。 前言 CSS代碼難維護(hù)眾所皆知。 為一個(gè)元素設(shè)置樣式的方式可以通過定義的class、定義的id、元素的標(biāo)簽名、元素的屬性等選擇器以及這些選擇器的組合來實(shí)現(xiàn); 作用于某個(gè)元素上的樣式又可能來自單個(gè)樣式規(guī)...
閱讀 2329·2023-04-26 00:28
閱讀 3078·2019-08-30 15:55
閱讀 2749·2019-08-30 12:47
閱讀 1560·2019-08-29 11:04
閱讀 3183·2019-08-28 18:14
閱讀 952·2019-08-28 18:11
閱讀 1679·2019-08-26 18:36
閱讀 3394·2019-08-23 18:21