募集)アイテムIDの一覧をワリと簡単に作る方法。
Exelにはっつけて自作のリストのアイテム名とIDの紐付け行いたい。これが簡単に出来るとエンチャ逆引きツールから公式の露店取引を連携できるようになるので、ご存じの方いたら教えていただければと。

@kousaka_mil
全然簡単じゃないけど現時点で思いつくのは、以下2つくらいかなぁ。

このどっちかをスクレイピングさせれば、(ツール作る手間はあるけど)自動化はできる気がする。

1. 公式の露店取引情報で該当アイテムのページ開いてURLからIDを取得する

2. unitrixで該当アイテムのページ開いて、ソースからIDを取得する

Follow

@mameta0824 既に500以上あるからとりあえずテキストから一式ブッコぬいて以降は1か2でちまちまメンテが安定かな?

· · Web · 1 · 0 · 0

@kousaka_mil
excelにはっつけてやるなら、ExcelのVBA使ってunitrixをスクレイピングすればいけそう

@kousaka_mil
超久しぶりにVBAしてみて、ID取れたので、超適当なコードですが一応共有します

添付機能にテキストファイル使え無かったので、文字数の関係上、3つくらいに分割して貼り付けますね(苦笑)

@kousaka_mil
Sub GetItemIdStart()
Dim itemName As String
Dim iRow As Integer
iRow = 5

Do Until Cells(iRow, 2).Value = ""
itemName = Cells(iRow, 2).Value
itemId = GetItemId(itemName)
Cells(iRow, 3).Value = itemId
iRow = iRow + 1
Loop

MsgBox ("処理が完了しました")
End Sub

@kousaka_mil
Function GetItemId(ByVal itemName As String)
'unitrixの該当ページをブラウザで表示する
Dim ie As New InternetExplorer

ie.Visible = False
ie.navigate "unitrix.net/?w=Noatun&i=" & itemName


'ページが表示完了されるまで待つ
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE


'表示したHTMLからIDの含まれる文字列を取得する
Dim doc As New HTMLDocument
Dim h2, span As Object
Dim onmouseover As String

@kousaka_mil

Set doc = ie.document
Set h2 = doc.getElementsByTagName("h2")(0)
Set span = h2.getElementsByTagName("span")(0)
onmouseover = span.getAttribute("onmouseover")

@kousaka_mil


'IDの含まれる文字列から、正規表現でアイテムIDのみ取得する
Dim regex As Object
Dim matches As Variant
Dim itemId As String

Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = ".+\[([0-9]+)].+"
regex.Global = True
Set matches = regex.Execute(onmouseover)
itemId = matches(0).submatches(0)


'ブラウザを閉じる
ie.Quit

GetItemId = itemId
End Function

@mameta0824 あざまーす。とりあえず初期データ作ったらこれベースでくみこんで今後の運用で楽させていただきます。
これ系の知識はそれほどないので助かります。
てか、まめさんくらいできると、ぶっちゃけあのツールは笑えるくらいに雑なつくりにしてあるのがわかるだろうな、とw

@kousaka_mil
見づらくてごめんなさい。
コードをtxtで保存したものや、excelも添付できない拡張子でした😂

少しでも役立ったら嬉しいです☺️
excelにどう組み込んで良いか分からなかったら聞いてくださいね~

どんだけ私を過大評価されてるんですかw大して変わらないと思いますよw

それと、綺麗な作りにすることも大事ではありますけど、それよりも期待通りの動作をすることや、時間をかけ過ぎないことも大事なので、今くらいで丁度良いと思いますよ~ :ro_great:

Sign in to participate in the conversation
RO丼 - RO Mastodon

ラグナロクオンラインユーザ向けのMastodonインスタンス。