как мне получить постоянно меняющееся значение из строки c#
-
08-07-2019 - |
Вопрос
Я работаю над программой, которая автоматически получит статистику ваших персонажей и еще много чего из арсенала wow.У меня уже есть html, и я могу определить, где находится строка, но мне нужно получить значение "this.effective", которое в данном случае равно 594.Но поскольку он всегда меняется (как и другие значения), я не могу просто занять в нем определенную позицию.Буду очень признателен за любую помощь.
Спасибо
Мэтт --------- Это фрагмент html-кода:
function strengthObject() {
this.base="168";
this.effective="594";
this.block="29";
this.attack="1168";
this.diff=this.effective - это.base;
Решение
Вы можете сделать это с помощью регулярных выражений:
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-адреса совпадают с теми, которые вы видите в своем веб-браузере.
Пожалуйста, обратите внимание, однако, что вы ДОЛЖНЫ установить пользовательский агент поле запроса должно быть полем поддерживаемого браузера, который поддерживает XML-версию файла, или вместо этого вы получите обратно HTML.Я использую "Mozilla / 5.0 Firefox / 2.0.0.1" в качестве пользовательского агента в моей программе, и это работает нормально.
О, также не делайте более нескольких запросов в секунду или в среднем более одного запроса каждые 3-4 секунды, иначе сайт заблокирует ваш IP на несколько часов ...
Одним из способов было бы использовать регулярное выражение для извлечения этого значения из исходного кода HTML:
this.effective="(\d+)"
Обратите внимание, что очистка HTML-кода не является идеальным решением (например, оно может прерваться при изменении формата HTML), однако я не знаю о "wow armory" и о том, какие другие способы существуют для получения этой информации.