我解决了这个问题。它一定是这样的:
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”类型异常
我该怎么办?
答案 0 :(得分:0)
您可以使用HtmlDocument类并通过预定义方法获取其标记的所有链接GetElementsByTagName(String)
答案 1 :(得分:0)
我发现的一个问题是您如何搜索img
元素
int start = Kodlar.IndexOf("<img>") + 4;
int finish = Kodlar.Substring(start).IndexOf("</img>");
将其与实际图片元素进行比较,它以<img src="
开头,以>
结尾。最后没有</img>
,因此找不到start
和finish
变量都设置为 -1 。一旦您尝试在substring
命令中使用这些命令,他们就会将超出范围错误
所以你可能想做的是将你的开始和完成定义调整为:
int start = Kodlar.IndexOf("<img ") + 4;
int finish = Kodlar.Substring(start).IndexOf(">");
您可能需要仔细检查要验证的值。