我正在开发一个程序,它会自动从哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇我已经有了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;


有帮助吗?

解决方案

您可以使用正则表达式执行此操作:

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 =诺达希尔&安培; 3 CN =有人

网址与您在网络浏览器中看到的网址相同。

请注意,虽然您必须将请求的用户代理字段设置为支持该文件的XML版本的受支持浏览器的字段,否则您将返回HTML。我使用“Mozilla / 5.0 Firefox / 2.0.0.1”。作为我的程序中的用户代理,它工作正常。

哦,也不要在第二次发出多个请求,或者每3或4秒平均多次请求,或者网站阻止你的IP几个小时......

一种方法是使用正则表达式从HTML源中提取此值:

this.effective="(\d+)"

请注意,HTML抓取不是一个理想的解决方案(例如,当HTML的格式发生变化时,它可能会中断)但是我不知道“wow armory”。以及获取此信息的其他方式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top