2009-11-29 60 views
0

我正在研究一個程序,它會自動從你的武器庫中獲得你的角色統計數據和什麼。我已經有了html,我可以確定字符串的位置,但是我需要得到「this.effective」的值,在這種情況下是594.但是由於它總是在變化(其他值也是如此,所以我不能只是把它的某個位置的任何幫助將不勝感激我如何從一個字符串c得到一個總是變化的值#

感謝

馬特 ---------這是HTML片段:。

function strengthObject() { 
     this.base="168"; 
     this.effective="594"; 
     this.block="29"; 
     this.attack="1168"; 

this.diff = this.effective - this.base;


回答

1

您可以使用正則表達式做到這一點:

using System; 
using System.Text.RegularExpressions; 

class Program 
{ 
    public static void Main() 
    { 
     string html = @"  function strengthObject() { 
       this.base=""168""; 
       this.effective=""594""; 
       this.block=""29""; 
       this.attack=""1168"";"; 

     string regex = @"this.effective=""(\d+)"""; 

     Match match = Regex.Match(html, regex); 
     if (match.Success) 
     { 
      int effective = int.Parse(match.Groups[1].Value); 
      Console.WriteLine("Effective = " + effective); 
      // etc.. 
     } 
     else 
     { 
      // Handle failure... 
     } 
    } 
} 
+0

感謝這個好主意,我從來沒有這樣想過使用它。 – Matt 2009-11-29 18:04:53

0

的一種方法將是使用正則表達式來提取從HTML源此值:

this.effective="(\d+)" 

注意HTML刮不是一個理想的解決方案(例如,它可能會破壞時的HTML格式變化),但我不知道有關「哇軍械庫」以及獲得這些信息的其他方式。

+0

我不認爲還有其他方法可以通過編程的方式來獲取這些信息。 – Matt 2009-11-29 18:04:09

+0

如果您設置了用戶代理,您可以將數據作爲XML文檔獲取 – jcoder 2010-01-04 14:35:26

1

這是很容易提取從網站的XML版本的信息。

如果您向這樣的URL(只有有效的字符名稱)發出請求,那麼您將得到一個XML文檔,您可以使用XML解析器輕鬆提取數據。

http://eu.wowarmory.com/character-sheet.xml?r=Nordrassil&cn=Someone

的網址是一樣的,你在Web瀏覽器中看到的。

請注意,儘管如此,您必須將請求的用戶代理字段設置爲支持該文件的XML版本的受支持瀏覽器的字段,否則您將取回HTML。我在程序中使用「Mozilla/5.0 Firefox/2.0.0.1」作爲用戶代理,它工作正常。

哦,也不要做出比排在第二的幾個請求,或平均超過一個請求的多個每隔3或4秒鐘或網站塊您的IP了幾個小時......

相關問題