【问题标题】:Get a data from website by StreamReader c#通过 StreamReader c# 从网站获取数据
【发布时间】:2017-04-29 21:50:41
【问题描述】:

我解决了这个问题。应该是这样的:

 int baslangic = Kodlar.IndexOf("<img src=") + 3;
            int bitis = Kodlar.Substring(baslangic).IndexOf(">");

我正在尝试使用流式阅读器解析 html。

我的目的是,获取所有图片链接。

我的代码是:

string site;
            site = $"http://tr.socialll.net/search?name={isim}+{soyad}&location={sehir}&gender=both";


            WebRequest talep = HttpWebRequest.Create(site);
            WebResponse cevap = talep.GetResponse();
            StreamReader oku = new StreamReader(cevap.GetResponseStream());
            string Kodlar = oku.ReadToEnd();
            int start = Kodlar.IndexOf("<img>") + 4;
            int finish = Kodlar.Substring(start).IndexOf("</img>");

            Console.WriteLine(Kodlar.Substring(start, finish));
            Console.Read();

我想去这里:

<img src="https://iasdai.net/img/user/128x128/116a38953-MWOVJ4aS250K5U.jpg" onerror="this.src='http://tr.socialll.net/img/alternative.png';" alt="">

但我收到这样的错误消息:

在 mscorlib.dll 中发生了“System.ArgumentOutOfRangeException”类型的未处理异常

我该怎么办?

【问题讨论】:

    标签: c# html-parsing streamreader


    【解决方案1】:

    您可以使用 HtmlDocument 类并通过预定义的方法 GetElementsByTagName(String) 获取所有链接的标签

    【讨论】:

      【解决方案2】:

      我发现的一个问题是您如何搜索 img 元素

      int start = Kodlar.IndexOf("<img>") + 4;
      int finish = Kodlar.Substring(start).IndexOf("</img>");
      

      将此与实际的图像元素进行比较,它以&lt;img src=" 开头,以&gt; 结尾。它的末尾没有&lt;/img&gt;,所以两者都没有找到,startfinish 变量都设置为-1。一旦您尝试在您的 substring 命令中使用这些,他们就会抛出 out of range 错误

      所以您可能想要做的是将您的 startfinish 定义调整为如下所示:

      int start = Kodlar.IndexOf("<img ") + 4;
      int finish = Kodlar.Substring(start).IndexOf(">");
      

      您可能需要仔细检查这些值以进行验证。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-02
        • 2017-04-14
        • 1970-01-01
        • 1970-01-01
        • 2011-01-02
        • 1970-01-01
        • 2013-01-28
        相关资源
        最近更新 更多