Usuário com melhor resposta
Capturar Link

Pergunta
-
Opa galera. Minha duvida é seguinte preciso ler uma pagina web aberta no webbrowser e capturar o link dela.
Exemplo de html da pagina
Link para pagina:
www.exemplo.com
Html da pagina:
<html>
<head><title>Exemplo de Pagina Web</title></head> <body> <iframe src="www.google.com"></iframe> </body></html>
Ler o html da pagina e pegar o link www.google.com
Tenho que pegar tudo que estiver entre " " do src
Respostas
-
Egon segue exemplo da sugestão que fiz acima, veja.
Download do HtmlAgilityPack:
http://htmlagilitypack.codeplex.com/
Resultado:
Código:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using HtmlAgilityPack; using System.Net; using System.IO; namespace WebApplication1 { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string html = DownloadWebPage("http://g1.globo.com/"); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); var resu = doc. DocumentNode. SelectNodes("//a/@href | //img/@src | //iframe/@src"). Select(f => new { Name = f.Name, Link = f.Attributes["href"] != null ? f.Attributes["href"].Value : f.Attributes["src"].Value != null ? f.Attributes["src"].Value : f.Attributes["iframe"].Value != null ? f.Attributes["iframe"].Value : "Nenhum link" } ).ToList(); } public string DownloadWebPage(string Url) { // Open a connection HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create(Url); // You can also specify additional header values like // the user agent or the referer: //WebRequestObject.UserAgent = ".NET Framework/2.0"; //WebRequestObject.Referer = "http://www.example.com/"; // Request response: WebResponse Response = WebRequestObject.GetResponse(); // Open data stream: Stream WebStream = Response.GetResponseStream(); // Create reader object: StreamReader Reader = new StreamReader(WebStream); // Read the entire stream content: string PageContent = Reader.ReadToEnd(); // Cleanup Reader.Close(); WebStream.Close(); Response.Close(); return PageContent; } } }
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/- Sugerido como Resposta Vitor dos Santos terça-feira, 31 de janeiro de 2012 17:13
- Marcado como Resposta Egon Freire quarta-feira, 1 de fevereiro de 2012 18:32
-
Você pode usar uma expressão regular.
Regex re = new Regex("<iframe src=\"(.*)\">"); Match m = re.Match("<html>" +"<head><title>Exemplo de Pagina Web</title></head>" +"<body>" + "<iframe src=\"www.google.com\"></iframe>" + "</body></html>"); MessageBox.Show(m.Groups[1].ToString());
- Editado Vitor dos Santos segunda-feira, 30 de janeiro de 2012 01:01
- Marcado como Resposta Egon Freire quarta-feira, 1 de fevereiro de 2012 18:32
Todas as Respostas
-
- Marcado como Resposta Egon Freire segunda-feira, 30 de janeiro de 2012 00:07
- Não Marcado como Resposta Egon Freire segunda-feira, 30 de janeiro de 2012 00:11
-
Como não entendi direito fiz de uma outra maneira.
Ele pega o id e depois busca pelo atribute src e então pega o link. Porem se o iframe não contem id fica difcil, teria alguma maneira de pegar este atributo src sem precisar definir um id. Da maneira que sugeri antes só sem o id.
-
Você pode usar uma expressão regular.
Regex re = new Regex("<iframe src=\"(.*)\">"); Match m = re.Match("<html>" +"<head><title>Exemplo de Pagina Web</title></head>" +"<body>" + "<iframe src=\"www.google.com\"></iframe>" + "</body></html>"); MessageBox.Show(m.Groups[1].ToString());
- Editado Vitor dos Santos segunda-feira, 30 de janeiro de 2012 01:01
- Marcado como Resposta Egon Freire quarta-feira, 1 de fevereiro de 2012 18:32
-
De grande ajuda seu code. Como tentei fazer. Só que ele me passa o code html dá pagina toda ao inves de só o link dentro de src.
string content = new WebClient().DownloadString(wb.Url.ToString());
string contentlink = Regex.Replace(content, "<iframe src=\"(.*)\">",string.Empty);textBox2.Text = contentlink;
-
-
Preciso pegar o html de uma pagina. Ler o valor que está em src. No seu exemplo o html já está no aplicativo.
Tentei da seguinte maneira porem sem sucesso.
string content = new WebClient().DownloadString(wb.Url.ToString());
string contentbusca = "<iframe src=\"(.*)\">";
Regex r = new Regex(contentbusca, RegexOptions.IgnoreCase);
Match m = r.Match(content);
textBox2.Text = m.Groups[1].ToString(); -
-
-
-
Egon você pode usar o HtmlAgilityPack para trabalhar com LINQ e recuperar valores de pagina HTML, veja este thread, talvez se você adaptar de certo:
http://social.msdn.microsoft.com/Forums/pt-BR/504/thread/4d24d7ee-c31b-4e37-84ba-721257d2e0dd
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/ -
-
Boa tarde.
Voce pode usar jQuery para recuperar o valor de qualquer elemento html de sua página.
Segue link:
http://jquery.com/
Consultoria .NET
ANALISTA DESENVOLVEDOR
Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta. -
Duvida somente aqui. Minha a iframe é a seguinte.
<iframe id="iframe" src="www.exemplo" marginheight="0" marginwidth="0" align="bottom" frameborder="0" scrolling="no"></iframe>
Regex re = new Regex("<iframe src=\"(.*)\"");
Só que ele não pega só o link. Ele vai ate.
www.exemplo" marginheight="0" marginwidth="0" align="bottom" frameborder="0" scrolling="no
Preciso que pare no link
www.exemplo
-
string s = ("<iframe id=\"iframe\" src=\"www.exemplo.com\" marginheight=\"0\" marginwidth=\"0\" align=\"bottom\" frameborder=\"0\" scrolling=\"no\"></iframe>"); string[] t = s.Substring(s.IndexOf("src=\"")).Split(new string[] { "\"" }, StringSplitOptions.RemoveEmptyEntries); Console.WriteLine(t[1]);
-
-
Egon segue exemplo da sugestão que fiz acima, veja.
Download do HtmlAgilityPack:
http://htmlagilitypack.codeplex.com/
Resultado:
Código:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using HtmlAgilityPack; using System.Net; using System.IO; namespace WebApplication1 { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string html = DownloadWebPage("http://g1.globo.com/"); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); var resu = doc. DocumentNode. SelectNodes("//a/@href | //img/@src | //iframe/@src"). Select(f => new { Name = f.Name, Link = f.Attributes["href"] != null ? f.Attributes["href"].Value : f.Attributes["src"].Value != null ? f.Attributes["src"].Value : f.Attributes["iframe"].Value != null ? f.Attributes["iframe"].Value : "Nenhum link" } ).ToList(); } public string DownloadWebPage(string Url) { // Open a connection HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create(Url); // You can also specify additional header values like // the user agent or the referer: //WebRequestObject.UserAgent = ".NET Framework/2.0"; //WebRequestObject.Referer = "http://www.example.com/"; // Request response: WebResponse Response = WebRequestObject.GetResponse(); // Open data stream: Stream WebStream = Response.GetResponseStream(); // Create reader object: StreamReader Reader = new StreamReader(WebStream); // Read the entire stream content: string PageContent = Reader.ReadToEnd(); // Cleanup Reader.Close(); WebStream.Close(); Response.Close(); return PageContent; } } }
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/- Sugerido como Resposta Vitor dos Santos terça-feira, 31 de janeiro de 2012 17:13
- Marcado como Resposta Egon Freire quarta-feira, 1 de fevereiro de 2012 18:32
-
Com este code daria para ler o que o html de uma pagina aberta no webbrowser e pegar o link que está em iframe e navegar nele ? Se sim, Teria como me explicar melhor o code pois não entendi direito sou novo nisso. Valeu
- Editado Egon Freire terça-feira, 31 de janeiro de 2012 18:35
-
Com este code daria para ler o que o html de uma pagina aberta no webbrowser e pegar o link que está em iframe e navegar nele ? Se sim, Teria como me explicar melhor o code pois não entendi direito sou novo nisso. Valeu
Bom vamos la, o código acima utilizar do HtmlAgilityPack para fazemos uma consulta no html que o método DownloadWebPage() retorna para nós através do LINQ.
No caso esta linha:
.SelectNodes("//a/@href | //img/@src | //iframe/@src").
Vai nos retornar todos os elementos HTML citado acima e seus atributos, no caso href e src.
Logo em seguida foi utilizado do método Select() e criamos um tipo anonimos para guarda o tipo do elemento HTMl e seu respectivo, utilize de if (condição ? sim : não) para pegar os links.
Teste este código acima com alguma pagina que contenha iframe e veja se funciona, boa sorte.
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/ -
Desculpe, mais ainda não entendi muito direito. E tambem como obter os links.
Estou tentando usar para ele pegar a url do webbrowser. Então baixa a pagina, lê e então procura o link que está no iframe, e apos isso pega este link e faz o webbrowser abrir ele.
Consegui da maneira anterior e mudando na pagina web.
Code:
string content = wb.DocumentText.ToString();
Regex re = new Regex("<iframe src='(.*)'");
Match m = re.Match(content);Então é preciso que o iframe estejá assim.
<iframe src='www.exemplo.com' marginheight="0" marginwidth="0" align="bottom" frameborder="0" height="500" width="500"></iframe>
Com uma aspa só então ele para já com aspas dupla vai ate a ultima aspas dupla da linha.
Outra duvida
Como uso no webbrowser_DocumenteCompleted
Como fazer o comando para ler o url que está no webbrowser, então se ele for qualquer outra url que não sejá: www.exemplo.com , Ele executar tal comando. E se for: www.exemplo.com , não fazer nada. Pois sempre a url começa sendo e depois é mudada.
- Editado Egon Freire quarta-feira, 1 de fevereiro de 2012 09:21
-
Ai que vem a questão e se Houver mais de uma ( iframe ) qual entrar?
ID: ~[L]ord
Trabalho na:Umbrella Corporation
Moro em: Raccoon city
Frase: A vida é apenas mais um exemplo de má programação.
=========================================
| -Se a resposta for util,por favor, marque-me como resposta.
| -Se esta sugestão for útil, por favor, classifique-a como útil.
=========================================
Leia-me: Organize o forum, marque as respostas & agradeça!