使用 AutoHotkey V2 撰寫爬蟲腳本程式,由豆瓣網擷取網頁內容,解析出需要的資料後產生Markdown檔案到Obsidian的儲存庫資料夾裡。
1. movie.ahk 腳本內容
#Requires AutoHotkey v2.0
#SingleInstance Force
DEBUG := true
if (DEBUG) {
sID := "1294194"
sOutputDir := "z:\test\obsidian\collections\Movies\"
} else if (A_Args.Length == 0) {
MsgBox("需要兩個參數`n範例:movie.ahk2 豆瓣ID 輸出資料夾")
ExitApp
} else {
sID := A_Args[1]
sOutputDir := A_Args[2]
}
;;f1::
FileEncoding("UTF-8")
url := "https://movie.douban.com/subject/" . sID . "/"
;;httpClient := ComObjCreate("WinHttp.WinHttpRequest.5.1") ;; AHK 1.x
httpClient := ComObject("WinHttp.WinHttpRequest.5.1")
httpClient.Open("POST", url, false)
;httpClient.SetRequestHeader("User-Agent", User-Agent)
;httpClient.SetRequestHeader("Content-Type", Content-Type)
;httpClient.SetRequestHeader("Cookie", Cookie)
httpClient.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
httpClient.Send()
httpClient.WaitForResponse()
Result := httpClient.ResponseText
;;html := ComObjCreate("HTMLFile") ;; AHK 1.x
html := ComObject("HTMLFile")
html.write(Result)
mainpic := html.getElementById("mainpic")
text := mainpic.innerHTML
pos1 := InStr(text, "<img ") text := Substr(text, pos1, 256) pos1 := InStr(text, ">")
text := Substr(text, 1, pos1)
pos1 := InStr(text, "src=")
sPic := Substr(text, pos1+5, 256)
pos2 := InStr(sPic, '"')
sPic := Substr(sPic, 1, pos2-1)
;;MsgBox(sPic)
pos1 := InStr(text, " alt=")
sTitle := Substr(text, pos1+5, 256)
pos2 := InStr(sTitle, ' ')
sTitle := Substr(sTitle, 1, pos2-1)
;;MsgBox(sTitle)
divInfo := html.getElementById("info")
if (divInfo) {
text := divInfo.innerText
;;MsgBox(text)
text := StrReplace(text, ": ", ":: ")
sFile := sOutputDir . sTitle . ".md"
if FileExist(sFile) {
FileDelete(sFile)
}
/*text := Format("---`r`ntemplate-output: Movies`r`ntags: movie`r`ntitle: {1}" .
"`r`n照片: {2}`r`n豆瓣ID: {3}`r`n---`r`n# {4}" .
"`r`n`r`n![|300]({5})`r`n`r`n{6}", sTitle, sPic, sID, sTitle, sPic, text)
*/
sFormat := "
(
---
template-output: Movies
tags: movie
title: {1}"
照片: {2}
豆瓣ID: {3}
---
# {4}
![|300]({5})
{6}
)"
text := Format(sFormat, sTitle, sPic, sID, sTitle, sPic, text)
FileAppend(text, sFile)
} else {
MsgBox("CAnnot find info div")
}
return
2. 相關鏈接
- [[Obs#115]用Obsidian建立萬用的收藏資料庫(Collections);善用Minimal Theme與Dataview]
- [[AHK#57] AutoHotkey v2正式釋出,2023年學習新目標]
3. 教學影片
##您可能也會有興趣的類似文章
- 幾個AutoHotkey的實用範例:音量控制、滾輪回上層與語音功能(AHK #7) (3則留言, 2019/06/05)
- AutoHotkey腳本的4種除錯方法(AHK #5) (0則留言, 2019/05/25)
- 用AutoHotkey統一不同工具的偵錯功能鍵 (0則留言, 2008/03/19)
- [Mattermost 教學#5] 方便的斜線命令與AutoHotkey (2則留言, 2018/04/17)
- 快速建立個人常用詞庫-AutoHotkey 熱字串小工具:HotString Helper(AHK #3) (0則留言, 2019/05/18)
- 支援Unicode的Autohotkey終於浮上抬面! (1則留言, 2010/10/16)
- [AHK#57] AutoHotkey v2正式釋出,2023年學習新目標 (2則留言, 2023/01/01)
- AutoHotkey:在FireFox裡用鍵盤瀏覽網頁 (2則留言, 2008/03/27)
- 輕鬆學會AutoHotkey的熱鍵:熱鍵用法實例解說(AHK #4) (2則留言, 2019/05/24)
- 輕鬆學會彈指神功-揭露AutoHotkey絕技 (59則留言, 2008/04/10)
- AutoHotkey的進階剪貼簿功能:WinClip類別 (0則留言, 2019/10/26)
- [Tools] 操作熱鍵與熱字串的超便利工具:AutoHotKey (13則留言, 2005/04/29)
- [Tools] 撰寫AutoHotKey指令以複製檔案 (2則留言, 2005/06/11)
- PhraseExpress:凡人版的AutoHotkey [修訂] (0則留言, 2009/11/28)
- [AHK#53] AutoHotkey多行內容輸出時的偏移問題 (0則留言, 2022/07/31)