【问题标题】:C# How to get only one string from a website [duplicate]C#如何从网站中只获取一个字符串[重复]
【发布时间】:2019-05-13 12:30:12
【问题描述】:

我正在尝试从网站获取数据。但是 HttpWebRequest 带出了网站的整个 HTML 编码。我只想从网站上获得订阅者。

代码是:

using System;
using System.Net;
using System.IO;

class DownloadPageHttpWebRequest
{
static void Main()
{
    string html = string.Empty;
    string url = "https://grow.grin.co/live-youtube-subscriber-count/PewDiePie";

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    using (Stream stream = response.GetResponseStream())
    using (StreamReader reader = new StreamReader(stream))
    {
        html = reader.ReadToEnd();
    }
    Console.WriteLine(html);
    Console.ReadKey();
    }  
}

输出是这样的,我把它缩短了。

var start = {
    id: "UC-lHJZR3Gqxm24_Vd_AJ5Yw",
    count: 76239202,
    name: "PewDiePie"
    ...
}

我只想打印“计数”,但我不知道该怎么做。请帮忙!

【问题讨论】:

  • 这只是在所有文本中搜索“count:”并将部分提取到逗号。有很多方法可以做到这一点,例如分成几行,然后 .Where 找到哪一行包含文本“count:”并从那里处理,或者对整个文本运行正则表达式 - 编写匹配并提取数字的内容应该很容易。跨度>
  • there are YouTube APIs for this,而不必去第三方网站。
  • 您可以尝试解析字符串,但是当网页更新时您的代码可能会中断。希望有问题的网站将有一个 API 旨在帮助您做这类事情。
  • 已经回答stackoverflow.com/questions/11426204/…你需要细化你的搜索/如何搜索/问题前搜索

标签: c# html-agility-pack


【解决方案1】:

您的输出格式是 json。所以你可以解析你的 json 来获取计数。

    var start = "{ id: 'UC-lHJZR3Gqxm24_Vd_AJ5Yw', count: 76239202, name: 'PewDiePie' }";
    dynamic result = JsonConvert.DeserializeObject(start);
    var count = result.count;
    Console.WriteLine(count);

【讨论】:

  • 这对我有用!谢谢。
  • 我在这里遗漏了什么吗?它是怎样的 JSON?即使我明确请求 JSON,我也会得到 HTML。我认为 OP 想要的输出是 JSON?
  • @John HTML 内部嵌入了 JSON。我很难看到 OP 认为这如何解决了他们的问题,因为他们的问题是如何解析 HTML,而这个解决方案 依赖于知道如何解析 HTML
  • @mjwills 啊,我明白了。如果问题能说清楚就好了。我同意,如果 OP 不知道如何解析 HTML,我不明白这对整体解决方案有何帮助。
  • 这实际上是 OP 整体问题的第 2 步 - 可惜他们的问题只关注第 1 步 @John。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 2015-06-13
相关资源
最近更新 更多