Προς το περιεχόμενο

Regex & HTML tags


sonyxp

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Θέλω να διαβάσω ένα συγκεκριμένο κείμενο

 

Έστω ότι έχω

<div id="myID">Onoma:<font color="Green">Mitsos</font></div>

Θέλω να διαβάσω το "Mitsos", πως θα αποκλείσω τα άλλα?

 

 

ΟΚ Το έκανα, λίγο μπακαλίστικα αλλα καλά είναι...

string GetTotalAccounts()
        {
            string strRegex = "Accounts.*</font><font color=\"green\">[0-9]*</font>";
            string strRegex2 = "[0-9]+";

            // Stages
            string stage1Text = "";
            string stage2Text = "";
            string stage3Text = "";

            WebRequest request = WebRequest.Create("...");
            WebResponse response = request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
            stage1Text = reader.ReadToEnd();

        
            // Regex Options
            RegexOptions myRegexOptions = RegexOptions.None;

            /*  1st Round: Get Text with Tags -> Accounts <font color="green">10</font>
                2nd Round: From the 1st keep only number, -> 10 */
            Regex myRegex1 = new Regex(strRegex, myRegexOptions);
            Regex myRegex2 = new Regex(strRegex2, myRegexOptions);

            // Find in all HTML Code for the first part & copy it
            foreach (Match myMatch in myRegex1.Matches(stage1Text))
            {
                if (myMatch.Success) //Copy that part
                    stage2Text = myMatch.Value.ToString();
            }

            // Search in copied text for number
            foreach (Match myMatch in myRegex2.Matches(stage2Text))
            {
                if (myMatch.Success)
                    stage3Text = myMatch.Value.ToString();
            }

            return ( stage3Text.ToString() );

        }//GetTotalAccounts


Αν έχετε κάτι καλύτερο Please help me

Επεξ/σία από sonyxp
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πχ θελω τα μελη απο το http://www.subz.tv/

3QBcMir.png?1

 

 

 

Με τον chrome παταω rclick πανω σε καποιο ονομα και μετα επιθεωρηση στοιχειου για να δω που ειναι αυτο το ονομα (σε ποιο node etc..)

και βου α λα

 

 

qwA0rIz.png?1

 

βλεπεις το ονομα ειναι στο html > body > div id=main > div id = side-border-right > div class=panelbody (το 4 κατα σειρα) 

μεσα σε spans

αρα αυτο ειναι ουσιαστικα ενα path, ψαχνω για html document στο msdn που να εχει xpath και δεν βρισκω



(σορυ για το σπασιμο στο post αλλα αυτη τη στιγμη λυνω αυτο το προβλημα)

οκ, τωρα βρικα οτι υπαρχει αυτο εδω που εχει html doc & xpath

τωρα το xpath για τα spam ειναι

@"/html/body/div[@id='main']/div[@id='side-border-right']/div[@class='panelbody'][4]/span"

με αυτο θα παρω ολα τα span που ειναι μεσα στο html/body/div...κλπ 

και ετσι θα παρω ολα τα ονοματα που ειναι μεσα σε span


using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace deleteme
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var wc = new WebClient())
            {
                var data = wc.DownloadData("http://www.subz.tv");
                var htm = Encoding.UTF8.GetString(data);
                var doc = new HtmlDocument();
                doc.LoadHtml(htm);

                var onLineMembers = doc.DocumentNode.SelectNodes
                    (@"/html/body/div[@id='main']/div[@id='side-border-right']/div[@class='panelbody'][4]/span");
               foreach(var onLineMember in onLineMembers)
               {
                   Console.WriteLine(onLineMember.InnerText);
               }
            }
            Console.Read();
        } 
        
    }
}

zQIUE7o.png?3

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Thanks, γνωρίζεις αν το GeckoWebBrowser διαθέτει κάποια συνάρτηση για auto click ? το απλό control έχει αυτή τη δυνατότητα αλλά χτυπάει πολλές φορές με κάποια script γιατί ίσως είναι παλιό και έχει θέμα συμβατότητας

 

το Gecko από την άλλη έχει αρκετά καλά όπως "GetElementByName" "GetElementByTagName" "GetElementByClassName"

                Random rndName = new Random();
		
		string user = "UserRnd" + rndName.Next(1, 9999);
		string pass = "RandVal" + rndName.Next(1, 9999);
		string email = "emRands_m" + rndName.Next(1, 9999);
        
		gweb.Document.GetElementsByName("account")[0].SetAttribute("value", user);
		gweb.Document.GetElementsByName("password1")[0].SetAttribute("value", pass);
		gweb.Document.GetElementsByName("password2")[0].SetAttribute("value", pass);
		gweb.Document.GetElementsByName("email")[0].SetAttribute("value", email + "@yahoo.com");
		gweb.Document.GetElementsByName("rules")[0].SetAttribute("checked", null);

Αλλά δεν έχει πχ ... InvokeMember("click");

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

doser?

Μεταξυ μας, δεν χρειαζεται να κανεις κατι invoke, απλα στελνε POST

όχι, απλά το κάνω για να μάθω ρε παιδι μου  (τώρα το οτι εβαλα το προγραμμα πριν για μερικα ελαχιστα λεπτα και εφτιαξε 1κ accounts στη βαση τους ειναι αλλο θεμα :P)

 

ναι το έψαξα το θέμα και τα POST είναι η καλύτερη επιλογή, απλά ένα σιτε που θέλω έχει Accepts Cookies και δεν ξέρω να τα χειριστώ

 

Αν γνωρίζεις σε παρακαλώ μπορείς να με βοηθήσεις?

η ιστοσελίδα είναι: http://l2mystic.com/acp/

 

εδώ είναι ο κώδικας για ένα άλλο site

        void PostRequest()
        {
            k++;
            Random rnd = new Random();
            string username = "sTste9" + rnd.Next(1, 9999).ToString() + "s" + rnd.Next(1, 9999).ToString();
            string password = "sPrtys4" + rnd.Next(1, 9999).ToString() + "p" + rnd.Next(1, 9999).ToString();
            string email = rnd.Next(1, 9999).ToString() + "urt8sw" + rnd.Next(1,100) +"@test.com";

            string result = "";
            string post = "account="+username+"&password1="+password+"&password2="+password+"&email="+email+"&rules=1&register=Confrimation";
            StreamWriter sw = null;

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://xxxxx.com/index.php?page=register");
            request.Method = "POST";
            request.ContentLength = post.Length;
            request.ContentType = "application/x-www-form-urlencoded";

            try
            {
                sw = new StreamWriter(request.GetRequestStream());
                sw.Write(post);
            }
            catch (Exception e)
            { MessageBox.Show("Exception: Failed to Post"); }
            finally
            { sw.Close(); }

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            using (StreamReader sr = new StreamReader(response.GetResponseStream()))
            {
                result = sr.ReadToEnd();
                sr.Close();
            }

            lWindow.AppendLog(result, k);
            lWindow.UpdateLogWindow();

        }

 

 

Αλήθεια, στις πόσες εγγραφές θα crasharei η βάση? θα μπορέσει πχ να φορτώσει 100κ εγγραφές όταν ξεκινήσει ο Game Server?

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...