2010-11-22 39 views
1

我目前正在製作一個網絡爬蟲來抓取視頻遊戲網站上的所有可能的字符(最終幻想XIV洛德石)。使用文本搜索查找所有可能結果的算法

我這樣做的界面是使用網站的搜索。 http://lodestone.finalfantasyxiv.com/rc/search/characterForm

如果搜索發現超過1000個字符,它只返回前1000.文本搜索似乎不理解*,?要麼 _。

如果搜索字母a,我將獲取所有在其名稱中包含a的字符,而不是以a開頭的所有字符。

我猜我能爲所有的字符組合AA,AB,BA等,做搜索,但並不能保證我:

  • 我將永遠不會超過1000個結果
  • 它看起來效率不高,因爲很多角色會出現多次,需要過濾掉。

我正在尋找如何構建我的搜索文本的算法。

+1

請注意,如果他們認爲自己是數據挖掘,他們可能會禁止您的IP http://support.jp.square-enix.com/rule.php?id=902&la=1&tag=useragreement_e http://support.jp.square-enix .com/rule.php?id = 902&la = 1&tag = playerssite – blizpasta 2010-11-23 13:21:47

+0

好的謝謝你的提示。我會確定與他們聯繫。這是一個非常有趣的項目,到目前爲止我有一個爆炸,但我會在繼續之前與他們聯繫。 – Gilles 2010-11-23 13:52:59

+0

更新:在通過電子郵件進行了多次嘗試通信之後,我甚至從未收到過自動回覆。因爲這個事實,我決定取消這個項目。 – Gilles 2011-03-24 15:54:00

回答

0

考慮到實際問題,您是否問Square Enix某種API訪問或數據庫轉儲?他們可能更喜歡這樣做,讓你颳去他們的搜索結果。

純粹從抽象的角度考慮,目前還不清楚任何搜索策略能否成功找到所有結果。假設有一個叫做「Ar」的字符,你會如何發現它?如果你搜索「ar」,結果只能達到Ak-。如果您搜索「a」或「r」,情況會更糟。任何其他搜索都無法找到這個字符。 (在實踐中,你可以通過猜測它的世界和/或主要技能來找到「Ar」,但理論上在這個世界上可能有那麼多具有該技能的角色,這仍然是無效的。)

0

這裏的主要問題是你打算如何處理所有這些字符。你的程序的目的是什麼?放在一邊,你可以搜索單個字母,並通過主要技能和世界過濾(使用雙循環)。對於任何輔音,你不可能有更多這樣的1000次點擊。如果要搜索以元音開頭的名稱,則在循環中使用bigraph vowel-other_letter,從A到Z迭代other_letter。

其他優化是嘗試猜測需要的字母列表將在哪個頁面啓動。如果您有總頁數(TNOP),那麼您的列表將從頁面TNOP * LETTER/27附近開始,其中LETTER是字母表中字母的順序。

相關問題