StreamReader c#

时间:2017-04-29 21:50:41

标签: c# html-parsing streamreader

我解决了这个问题。它一定是这样的:

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

我正在尝试使用streamreader解析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”类型异常

我该怎么办?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

将其与实际图片元素进行比较,它以<img src="开头,以>结尾。最后没有</img>,因此找不到startfinish变量都设置为 -1 。一旦您尝试在substring命令中使用这些命令,他们就会将超出范围错误

所以你可能想做的是将你的开始完成定义调整为:

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

您可能需要仔细检查要验证的值。