2013-09-18 5 views
0

Я новичок в этом мире обхода веб-страниц. Итак, кто-нибудь работал над любым веб-приложением для веб-сканирования? Мне нужна помощь, если кто-то использовал asp.net & C# не Форма окна VB.NET.Проблемы с HTMLDocument

У меня есть веб-формы по умолчанию с 3 текстовые поля и кнопки, и это код позади:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Net; 

using System.IO; 




public partial class _Default : System.Web.UI.Page 
{ 
    String Rstring; 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     WebRequest myWebRequest; 
     WebResponse myWebResponse; 
     String URL = TextBox1.Text; 

     myWebRequest = WebRequest.Create(URL); 
     myWebResponse = myWebRequest.GetResponse();//Returns a response from an Internet resource 

     Stream streamResponse = myWebResponse.GetResponseStream();//return the data stream from the internet 
     //and save it in the stream 

     StreamReader sreader = new StreamReader(streamResponse);//reads the data stream 
     Rstring = sreader.ReadToEnd();//reads it to the end 
     String Links = GetContent(Rstring);//gets the links only 

     TextBox2.Text = Rstring; 
     TextBox3.Text = Links; 
     streamResponse.Close(); 
     sreader.Close(); 
     myWebResponse.Close(); 

    } 


    //public ISet<string> GetNewLinks(string content) 
    //{ 
    // Regex regexLink = new Regex("(?<=<a\\s*?href=(?:'|\"))[^'\"]*?(?=(?:'|\"))"); 

    // ISet<string> newLinks = new HashSet<string>(); 
    // foreach (var match in regexLink.Matches(content)) 
    // { 
    //  if (!newLinks.Contains(match.ToString())) 
    //   newLinks.Add(match.ToString()); 
    // } 

    // return newLinks; 
    //} 

    private String GetContent(String Rstring) 
    { 
     String sString = ""; 
     HTMLDocument d = new HTMLDocument(); 
     IHTMLDocument2 doc = (IHTMLDocument2)d; 
     doc.write(Rstring); 

     IHTMLElementCollection L = doc.links; 

     foreach (IHTMLElement links in L) 
     { 
      sString += links.getAttribute("href", 0); 
      sString += "/n"; 
     } 
     return sString; 
    } 
} 

ответ

1

Я знаю, что это старый вопрос, но он никогда не был так ответили здесь ничего не выходит, может быть, это будет помогите кому-нибудь.

мне удалось сделать код работу и получил все ссылки, изменив способ вы получили ваш контент с этим:

private string GetContent(String Rstring) 
    { 
     String sString = ""; 
     String temp = ""; 
     mDocument.LoadHtml(Rstring); 
     IEnumerable<HtmlNode> links = mDocument.DocumentNode.Descendants("a"); 

     foreach (HtmlNode link in links) 
     { 
      temp = link.GetAttributeValue("href", ""); 
      if (temp.StartsWith("https://") || temp.StartsWith("http://")) 
       sString += temp + "\n"; 
      else 
       continue; 
     } 

     return sString; 
    } 

Так я иду получить все а элементы на странице, то, если у них есть valid link Я добавляю его в строку и возвращаю.

Смежные вопросы