昨天有人留言問這么一個問題:
在解決問題之前,我們先要知道石墨文檔是做什么用,(網址https://shimo.im)它是一個在線的word文檔,可以用來存儲圖片、文字,同時把存儲好內容的網址發給別人,這樣別人也可以看到你寫的內容了。并且當你修改文檔中的內容時會自動保存,別人也會實時看到你更改后的內容。
當然說這么多,對于我們腳本有什么作用呢?
①可以做控制開關,比如讓腳本讀取石墨文檔的內容,如果內容中包含我們特定的文字,就讓腳本執行,如果不包含就關閉腳本。我們就可以通過修改文檔隨時控制腳本能否使用。
②話術庫,比如腳本要發送一句話,但是這句話要不定期變化,那么就可以把話術放到石墨文檔中,然后讓腳本讀取石墨文檔,想修改的時候,就直接修改石墨文檔。
③給腳本添加廣告語,這個和第二點一樣,我們把廣告語寫到石墨文檔中,讓腳本讀取然后在運行的時候顯示一下。定期我們通過修改石墨文檔,更換廣告語。
總體來說石墨文檔就相當于一個“在線的txt文檔”的作用,并且是長期有效的。
那問題來了,如果是一個txt文本,不是直接讀取就行了嗎,那還需要什么對接教程?
其實石墨文檔并不是一個TXT文本,而是一個html頁面,舉個例子看一下。
大家可以打開這個網址https://shimo.im/docs/SSChv3Irm5Iu5FwY
看起來很簡潔,就只有一些文字啥的,但是如果我們用url.get命令獲取頁面源碼的時候,會發現它是一個網頁的html文件,而不是只有文字。
traceprint url.get("https://shimo.im/docs/SSChv3Irm5Iu5FwY/read")
因為很多人是不熟悉html靜態頁面的代碼,所以到這步就開始頭大了。
其實大可不必,html本質上就是一大堆文字、字母、數字、符號的組合,當做普通的字符串處理就行。
對于字符串的提取,我們常見的方式就是截取法和正則匹配。
截取法就不說了,看一下我基礎課的第22課,主要就是mid命令及獲取對應的命令參數方法。
下面說下正則匹配:
(一)先找到我們要提取的內容的位置。
在文本中通過ctrl+f查找命令,找到我們要提取文字的所在位置。
(二)單獨復制到一個文本中,分析格式。
通過調整一下換行格式,可以看到每一行文字就是一個p標簽的段落文字 ,
標簽在html代碼中代表段落的意思。
(三)正則匹配
單獨拿出來一行代碼:
<p? line="EnXh">你好,歡迎關注3分鐘學堂公眾號~</p>
寫成正則匹配就是:
shanhai.RegexFind(html,"<p? line="".-"">(.-)</p>")
那么這個<p? line="".-"">(.-)</p>正則匹配表達式是怎么來的呢?
我們先把原始代碼處理一下:
<p? line="隨機不確定的文字">要提取的文字</p>
隨機不確定的文字,我們用符號.-表示,點代表任意內容,減號代表最小的匹配數量。
要提取的文字,我們用(.-)表示,除了點和減號以外,多了一個括號,括號代表其內部是我們要提取的內容。
另外需要格外注意的一點,因為按鍵本身把雙引號作為轉義字符,如果代碼中有雙引號,需要在雙引號前面在加上一個雙引號。
下面我們看一下代碼:
代碼中提取了標題、按段落提取正文,提取全部正文。
由于html代碼除了p標簽以外,還可以能會有span,li,em等別的標簽混在里面,所以我們在寫石墨文檔的時候,不要從別的頁面上直接復制,最好是手動輸入,如果非要復制,那么先把內容放到txt文本中去掉格式,在從文本里面復制出來。