[ Java ] : سحب عنوان صفحة ويكيبيديا بأستعمال كلاس HttpURLConnection - و تقنية Regex

تم تحميل الصفحة في 1,3001182 ثانية
سحب عنوان صفحة ويكيبيديا بأستعمال كلاس HttpURLConnection - و تقنية Regex
إنضم
27 مايو 2014
المشاركات
294
الإعجابات
390
النقاط
63
العمر
18
الإقامة
Marruecos
السَلام عليكم ,

قمت بكتابة كلاس جافا بسيط لسحب النص من صفحة ويب و أستخراج معلومات معينة بأستعمال تقنية ال Regular Expressions ,
قمت بالتطبيق على ويكيبديا لسحب عنوان الصفحة كمثال بسيط جدا لطريقة استعمال الكلاس , بالرغم أنه سهل الأستعمال ,

الكلاس الأول الذي طرحته في موضوع سابق :

[ Java ] : - كلاس JAVA للقراءة و الكتابة على صفحة ويب - HttpURLConnection

Java:
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

/*

4w1il , oThmaN

 */


public class ConnectSource {

    private String url;
    private String method;
    private String postData = null;

    ConnectSource(String url, String method,String postData) {

        this.url = url;
        this.method = method;
        this.postData = postData;

    }

    String ReadSource() {
        String line;
        StringBuilder source = new StringBuilder();
        BufferedReader bufReader = null;
        try {
            URL sourceURL = new URL(url);
            HttpURLConnection sourceURLH = (HttpURLConnection) sourceURL.openConnection();
            if (this.method == "POST") {

                sourceURLH.setRequestMethod(this.method);
                sourceURLH.setDoOutput(true);
                sourceURLH.setInstanceFollowRedirects(false);
                sourceURLH.setRequestProperty("Content-Type" , "application/x-www-form-urlencoded");
                sourceURLH.setRequestProperty("charset","utf-8");
                sourceURLH.setRequestProperty("Content-Length",Integer.toString(this.postData.getBytes().length));
                sourceURLH.setRequestProperty("User-Agent","Hello World");

                try(DataOutputStream wr = new DataOutputStream(sourceURLH.getOutputStream())){
                    wr.write(this.postData.getBytes());
                    bufReader = new BufferedReader(new InputStreamReader(sourceURLH.getInputStream()));
                    while ((line = bufReader.readLine()) != null){
                        source.append(line + "\n");
                    }
                }
            }

            else if (this.method == "GET")
            {
                sourceURLH.setRequestProperty("User-Agent","Hello World");
                bufReader = new BufferedReader(new InputStreamReader(sourceURLH.getInputStream()));
                while ((line = bufReader.readLine()) != null) {
                    source.append(line + "\n");
                }
            }
            else {
                return "ErrorInsideMe : The Method isn't available";
            }

        } catch (IOException e) {
            return "ErrorInsideMe : " + e;
        }

        finally {

            if(bufReader != null){
                try {
                    bufReader.close();
                }
                catch (IOException e){

                }
            }
            }


        return source.toString();
    }
}
الكلاس الثاني الذي يقوم بأستخراج المعلومات من النص :

Java:
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class GetInformation {

    private String regex;
    private String htmlsource;
    private ArrayList<String> found = new ArrayList<String>();

    GetInformation(String regex,String htmlsource){
        this.regex = regex;
        this.htmlsource = htmlsource;
    }

    ArrayList<String> GetMatching(){
       Pattern p = Pattern.compile(this.regex);
        Matcher r = p.matcher(this.htmlsource);

        while (r.find()){
            found.add(r.group());
        }

    return found;
    }

}
مثال بسيط لطريقة الأستعمال :

Java:
import java.util.ArrayList;

public class MainClass {

    public static void main(String[] args){

      ConnectSource cnt = new ConnectSource("https://en.wikipedia.org/wiki/Statistical_inference","GET",null);
      String data = cnt.ReadSource();

       if(!data.contains("ErrorInsideMe")){
           GetInformation get = new GetInformation("<h1 id=\"firstHeading\" class=\"firstHeading\" lang=\"en\">\\w+\\s\\w+</h1>",data);
           ArrayList<String> found =  get.GetMatching();

           for(String word : found){
                System.out.print("Wikipedia Page Header Title : " + word.replace("<h1 id=\"firstHeading\" class=\"firstHeading\" lang=\"en\">","").replace("</h1>",""));
           }
      }

    }

}
 

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,825
الإعجابات
4,299
النقاط
133
الإقامة
USA
وعليكم السلام

موضوع رائع اخي
خصوصا انه لم يطرح الكثير من المواضيع بخصوص Regex هنا بلديف مع انها مهمه جدا وتختصر الكثير
 
إنضم
8 سبتمبر 2013
المشاركات
7,572
الإعجابات
11,313
النقاط
168
الإقامة
JORDAN
شكراً لك على مشاركتنا اخي @4w1il
لم يطرح احد شروحات جافا مهمة مثل هذا الموضوع بأمانة لان التعامل مع نصوص شيء ليس سهل و الاهم التعامل مع موقع ولو كان بشكل بسيط ليس سهل ايضاً بالجافا
حفظت الصفحة بالمفضلة لكي انصح بها كل من يحتاجها .. اذكر اني عانيت شوية مع هذين الشيئين صراحة هههه .. جازاك الله خير

--------------
اخي @Mariio تم طرح عدة شروحات تغطي اساسيات الـRegEx من جهة الأساتذة @Qassam Sniper , @IRadical ,@Youssef13 , @»UNDeTECTeD«
...لكن منذ مدة طويلة للأسف و لا احد يبحث عن العلم هذه الفترة كله يريد شي جاهز لذلك لا تراها في صفحات متقدمة من اقسام البرمجة
 

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,825
الإعجابات
4,299
النقاط
133
الإقامة
USA
شكراً لك على مشاركتنا اخي @4w1il
لم يطرح احد شروحات جافا مهمة مثل هذا الموضوع بأمانة لان التعامل مع نصوص شيء ليس سهل و الاهم التعامل مع موقع ولو كان بشكل بسيط ليس سهل ايضاً بالجافا
حفظت الصفحة بالمفضلة لكي انصح بها كل من يحتاجها .. اذكر اني عانيت شوية مع هذين الشيئين صراحة هههه .. جازاك الله خير

--------------
اخي @Mariio تم طرح عدة شروحات تغطي اساسيات الـRegEx من جهة الأساتذة @Qassam Sniper , @IRadical ,@Youssef13 , @»UNDeTECTeD«
...لكن منذ مدة طويلة للأسف و لا احد يبحث عن العلم هذه الفترة كله يريد شي جاهز لذلك لا تراها في صفحات متقدمة من اقسام البرمجة

سوف احاول تحميل دورة مدفوعه لان عندي خصومات في بعض المواقع وارفعها مثل دورة السي بلس بلس المثبته الان
 
إنضم
8 سبتمبر 2013
المشاركات
7,572
الإعجابات
11,313
النقاط
168
الإقامة
JORDAN
سوف احاول تحميل دورة مدفوعه لان عندي خصومات في بعض المواقع وارفعها مثل دورة السي بلس بلس المثبته الان
والله براحك لكن راح يبقون يطلبون Patterns مهما حاولت هههه
 
إنضم
27 مايو 2014
المشاركات
294
الإعجابات
390
النقاط
63
العمر
18
الإقامة
Marruecos
شكراً لك على مشاركتنا اخي @4w1il
لم يطرح احد شروحات جافا مهمة مثل هذا الموضوع بأمانة لان التعامل مع نصوص شيء ليس سهل و الاهم التعامل مع موقع ولو كان بشكل بسيط ليس سهل ايضاً بالجافا
حفظت الصفحة بالمفضلة لكي انصح بها كل من يحتاجها .. اذكر اني عانيت شوية مع هذين الشيئين صراحة هههه .. جازاك الله خير

--------------
اخي @Mariio تم طرح عدة شروحات تغطي اساسيات الـRegEx من جهة الأساتذة @Qassam Sniper , @IRadical ,@Youssef13 , @»UNDeTECTeD«
...لكن منذ مدة طويلة للأسف و لا احد يبحث عن العلم هذه الفترة كله يريد شي جاهز لذلك لا تراها في صفحات متقدمة من اقسام البرمجة
رأيت أيضا أن مواضيع الجافا تكاد تكون منعدمة في المنتدى , ففكرت بأن أبدأ في المساهمة و لو بالقليل في نشر مواضيع تتعلق بهذا الأمر .
-
لاحظت أيضا أنه لم يعد هناك أهتمام بالبرمجة و الأستفادة في الديف بوينت , أصبح الربح السهل هو الموضوع المتداول حاليا في المنتدى , عبر أستغلال ماينرات جاهزة و أختصار الروابط و ما الى ذلك .
 
إنضم
8 سبتمبر 2013
المشاركات
7,572
الإعجابات
11,313
النقاط
168
الإقامة
JORDAN
رأيت أيضا أن مواضيع الجافا تكاد تكون منعدمة في المنتدى , ففكرت بأن أبدأ في المساهمة و لو بالقليل في نشر مواضيع تتعلق بهذا الأمر .
-
لاحظت أيضا أنه لم يعد هناك أهتمام بالبرمجة و الأستفادة في الديف بوينت , أصبح الربح السهل هو الموضوع المتداول حاليا في المنتدى , عبر أستغلال ماينرات جاهزة و أختصار الروابط و ما الى ذلك .
بالضبط اخي .. للاسف الشديد الكل اتجه الى المجال السهل ..
حالياً البرمجة فقط لبرامج السوشل ميديا (متابعين , اعجابات,معرفات مميزة ... الخ) لذلك الدوت نت سهلة في هذا و ايضاً واحد يسرق من الثاني ههه تلاقي السورس هو نفسه مع تعديلات بسيطة .. لا ابداع
و اذا توقف البرنامج الرئيسي تتوقف كل البرامج الاخرى لانها تعتمد نفس الطريقة المسروقة .. ولا يحلها الا مبرمج او مبرمجها الاصلي ..

الجافا كما cpp تحتاج مبرمج .. حتى لو نسخت السورس سوف تظهر اخطاء .. اسهل من cpp لكن ابداً ليست بسهولة الـدوت نت
اتمنى ان تستمر بطرح الشروحات الخاصة بهذه اللغة الجميلة ..
 
إنضم
5 أغسطس 2011
المشاركات
505
الإعجابات
429
النقاط
63
الإقامة
0x400000
^
آسف لم يظهر جيدا بسبب التعوين الاوتوماتيكي للصفحات
https:// en.wikipedia.org/wiki/ [ Regular_expression ]
 

alperto

Beginner Developer
rank
إنضم
19 مايو 2019
المشاركات
71
الإعجابات
6
النقاط
8
العمر
26
وعليكم السلام

موضوع رائع اخي
خصوصا انه لم يطرح الكثير من المواضيع بخصوص Regex هنا بلديف مع انها مهمه جدا وتختصر الكثير
شكرا لمروركم :1 (226):
ان شاء الله القادم افضل

أعجبني إقتباس رد
إبلاغ
الإعجابات:๖ۣۜA M E E R
منذ 36 دقيقة
7

A
alperto
Beginner Developer
إنضم19 مايو 2019المشاركات34الإعجابات0النقاط1العمر26
إقتباس من : MSF
موضوع مميز
مشكور
رمضان كريم للجميع
الله يوفقكم2019

إقتباس رد
إبلاغ
منذ 31 دقيقة
8

A
alperto
Beginner Developer
إنضم19 مايو 2019المشاركات34الإعجابات0النقاط1العمر26
اشكرك اخي الكريم :383838::383838:

إقتباس رد
إبلاغ
منذ 5 دقيقة
جديد 9
A
alperto
Beginner Developer
إنضم19 مايو 2019المشاركات34الإعجابات0النقاط1العمر26
إقتباس من : A B D A L L A H
كل الود والاحترام والتقدير
موضوع جميل ومفيد
رزقك الله من جميع أبوابه وأوسعها
رمضان كريم للجميع
الله يوفقكم

2019

إقتباس رد
إبلاغ تحرير
منذ 2 دقيقة
جديد 10
A
alperto
Beginner Developer
إنضم19 مايو 2019المشاركات36الإعجابات0النقاط1العمر26
كل الود والاحترام والتقدير
موضوع جميل ومفيد
رزقك الله من جميع أبوابه وأوسعها

إقتباس رد
إبلاغ تحرير
منذ 2 دقيقة
جديد 11
A
alperto
Beginner Developer
إنضم19 مايو 2019المشاركات37الإعجابات0النقاط6العمر26
إقتباس من : alperto
كل الود والاحترام والتقدير
موضوع جميل ومفيد
رزقك الله من جميع أبوابه وأوسعها
كل الود والاحترام والتقدير
موضوع جميل ومفيد
رزقك الله من جميع أبوابه وأوسعها

إقتباس رد
إبلاغ تحرير
منذ لحظة
جديد 12
A
alperto
Beginner Developer
إنضم19 مايو 2019المشاركات39الإعجابات0النقاط6العمر26
كل الود والاحترام والتقدير
موضوع جميل ومفيد
رزقك الله من جميع أبوابه وأوسعها

201978

إقتباس رد
إبلاغ تحرير
منذ لحظة
جديد 13
A
alperto
Beginner Developer
إنضم19 مايو 2019المشاركات40الإعجابات0النقاط6العمر26
كل الود والاحترام والتقدير
موضوع جميل ومفيد
رزقك الله من جميع أبوابه وأوسعها

5544888

إقتباس رد
إبلاغ تحرير

الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع (1 عضو و 1 ضيف)
A
إزالة التنسيق

غامقمائلمسطرمشطوب

لون النصعائلة الخطحجم الخط

إدراج رابطإدراج صورةالإبتساماتإدراج

المحاذاةقائمة

تراجعإعادة

المسوداتتبديل الـ BB code

أكتب ردك...

رد معاينة


xenForo العربية

خيارات الاستايل
نوع الخط
تلوين الروابطOFF
مودك
إرجاع خيارات الإستايل
 

الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع (1 عضو و 1 ضيف)

خيارات الاستايل

نوع الخط
مودك
اخفاء السايدر بار OFF
توسيط المنتدى OFF
فصل الأقسام OFF
الأقسام الفرعية OFF
عرض المشاركات
حجم الخط
معلومات العضو OFF
إخفاء التوقيع OFF

إرجاع خيارات الإستايل