3 Stimmen

Abrufen von Webseiteninhalten aus Firefox in einem C#-Programm

Ich muss eine einfache C#-Anwendung schreiben, die den gesamten Inhalt einer derzeit in Firefox geöffneten Webseite empfangen soll. Gibt es eine Möglichkeit, dies direkt von C# aus zu tun? Wenn nicht, ist es möglich, eine Art Plug-in zu entwickeln, das die Seiteninhalte überträgt? Da ich ein absoluter Neuling in der Programmierung von Firefox-Plug-ins bin, wäre ich wirklich dankbar für jede Information, die mir einen schnellen Einstieg ermöglicht. Vielleicht gibt es einige Quellen, die ich als Referenz verwenden kann? Doc-Links? Empfehlungen?

UPD : Ich muss tatsächlich mit einer Firefox-Instanz kommunizieren, nicht den Inhalt einer Webseite von einer bestimmten URL abrufen

0 Stimmen

Ich gebe Ihnen den ersten Teil; von C# aus kann eine Webseite wie folgt gelesen werden: msdn.microsoft.com/de-us/library/system.net.webrequest.aspx . Ich weiß nicht, wie man eine Seite in Firefox abruft.

1voto

Madhur Ahuja Punkte 21604

Es wäre hilfreich, wenn Sie genauer beschreiben würden, was Sie erreichen wollen. Kann sein, Plugins bereits da draußen wie Firebug kann helfen.

Wie auch immer, wenn Sie wirklich sowohl Plugins als auch C#-Anwendungen entwickeln wollen:

Sehen Sie sich diese Anleitung zur Firefox-Erweiterung an: http://robertnyman.com/2009/01/24/how-to-develop-a-firefox-extension/

Andernfalls können Sie die WebRequest- oder HttpWebRequest-Klasse in der .NET-Anfrage verwenden, um die HTML-Quelle einer beliebigen URL zu erhalten.

0voto

m.edmondson Punkte 29622

Ich denke, dass man dafür fast sicher ein Firefox-Plugin schreiben müsste. Allerdings gibt es sicherlich Möglichkeiten, eine Webseite anzufordern und die HTML-Antwort in C# zu erhalten. Es hängt davon ab, was Ihre Anforderungen sind?

Wenn Sie einfach nur den Quellcode von einer beliebigen Website erhalten möchten, hinterlassen Sie einen Kommentar und ich werde Sie auf den Code hinweisen.

0 Stimmen

Entschuldigung für die unklare Frage, ich habe sie etwas präzisiert. Ich muss mit einer Firefox-Instanz kommunizieren.

0 Stimmen

In diesem Fall müssen Sie den Weg über das Firefox-Plugin gehen

0 Stimmen

Wenn das der Fall ist, dann müssen Sie ein Plugin in Firefox haben, die sagen wir mal die Url in eine temporäre Datei schreiben kann und C# wird die Datei lesen und das HTML ausgeben.

0voto

Shashi Punkte 2794
Uri uri = new Uri(url); 
System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri.AbsoluteUri);
        req.AllowAutoRedirect = true;
        req.MaximumAutomaticRedirections = 3;
        //req.UserAgent = _UserAgent; //"Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Searcharoo.NET)";
        req.KeepAlive = true;
        req.Timeout = _RequestTimeout * 1000; //prefRequestTimeout 

        // SIMONJONES http://codeproject.com/aspnet/spideroo.asp?msg=1421158#xx1421158xx
        req.CookieContainer = new System.Net.CookieContainer();
        req.CookieContainer.Add(_CookieContainer.GetCookies(uri));

System.Net.HttpWebResponse webresponse = null;

        try
        {
            webresponse = (System.Net.HttpWebResponse)req.GetResponse();
        }
        catch (Exception ex)
        {
            webresponse = null;
            Console.Write("request for url failed: {0} {1}", url, ex.Message);
        }

        if (webresponse != null)
        {
            webresponse.Cookies = req.CookieContainer.GetCookies(req.RequestUri);
            // handle cookies (need to do this incase we have any session cookies)
            foreach (System.Net.Cookie retCookie in webresponse.Cookies)
            {
                bool cookieFound = false;
                foreach (System.Net.Cookie oldCookie in _CookieContainer.GetCookies(uri))
                {
                    if (retCookie.Name.Equals(oldCookie.Name))
                    {
                        oldCookie.Value = retCookie.Value;
                        cookieFound = true;
                    }
                }
                if (!cookieFound)
                {
                    _CookieContainer.Add(retCookie);
                }
            }
string enc = "utf-8"; // default
            if (webresponse.ContentEncoding != String.Empty)
            {
                // Use the HttpHeader Content-Type in preference to the one set in META
                doc.Encoding = webresponse.ContentEncoding;
            }
            else if (doc.Encoding == String.Empty)
            {
                doc.Encoding = enc; // default
            }
            //http://www.c-sharpcorner.com/Code/2003/Dec/ReadingWebPageSources.asp
            System.IO.StreamReader stream = new System.IO.StreamReader
                (webresponse.GetResponseStream(), System.Text.Encoding.GetEncoding(doc.Encoding));

webresponse.Close();

2 Stimmen

Bitte verwenden Sie die {} um Ihren Code wie Code aussehen zu lassen.

0voto

kame Punkte 18813

Das tut, was Sie wollen.

using System.Net;

var cli = new WebClient();
string data = cli.DownloadString("http://www.heise.de");
Console.WriteLine(data);

0voto

Andreas Haferburg Punkte 4913

Native Nachrichtenübermittlung ermöglicht es einer Erweiterung, Nachrichten mit einer auf dem Computer des Benutzers installierten nativen Anwendung auszutauschen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X