Как я могу получить всегда изменяющееся значение из строки C#
Я работаю над программой, которая автоматически получит статистику ваших персонажей и еще много чего из арсенала вау. У меня уже есть HTML, и я могу определить, где находится строка, но мне нужно получить значение "this.effective", которое в данном случае равно 594. Но так как оно всегда меняется (как и другие значения, я не могу Просто займите определенную позицию. Любая помощь будет с благодарностью.
Спасибо
Мэтт --------- Это HTML-фрагмент:
function strengthObject() {
this.base="168";
this.effective="594";
this.block="29";
this.attack="1168";
this.diff = this.effective - this.base;
3 ответа
Вы можете сделать это используя регулярные выражения:
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...
}
}
}
Намного проще извлечь информацию из XML-версии сайта.
Если вы сделаете запрос к URL-адресу, подобному этому (только с допустимым именем символа), вы получите XML-документ, который можно использовать для синтаксического анализа XML, чтобы легко извлечь данные.
http://eu.wowarmory.com/character-sheet.xml?r=Nordrassil&cn=Someone
URL-адреса совпадают с теми, которые вы видите в своем веб-браузере.
Обратите внимание, что вы ДОЛЖНЫ установить поле User Agent запроса в поле поддерживаемого браузера, поддерживающего XML-версию файла, или вместо этого вы получите обратно HTML. Я использую "Mozilla/5.0 Firefox/2.0.0.1" в качестве пользовательского агента в моей программе, и он отлично работает.
О, также не делайте больше, чем несколько запросов в секунду, или в среднем более одного запроса каждые 3 или 4 секунды, или сайт блокирует ваш IP на несколько часов...
Одним из способов будет использование регулярного выражения для извлечения этого значения из источника HTML:
this.effective="(\d+)"
Обратите внимание, что очистка HTML не является идеальным решением (например, оно может сломаться при изменении формата HTML), однако я не знаю о "арсенале вау" и о том, как можно получить эту информацию.