القائمة الرئيسية

الصفحات

برمجة سكريبت جمع البيانات من مواقع الانترنت

 programming and code web scraping

تخيل أردت نسخ ألف منتوج إلى موقعك من أحد مواقع البيع ، فهذا ربما سيأخد منك وقت كثير جدا ، أو تخيل جاءتك فكرة تسويق عبر البريد الالكتروني أو عبر أرقام الهاتف وأردت جمع مجموعة كبيرة من الاميلات أو ارقام الهاتف من الانترنت أو من أحد المواقع فهذا كذلك سيأخد منك وقت ، أو تخيل لقيت معلومات او بيانات في أحد مواقع الانترنت وأردت تسجيلها في ملف اكسل أو استخدامها أو بيعها في مكان آخر فهذا كذلك سيأخذ منك وقت ، والكثير من الأفكار الاخرى موجود في عالم الويب نجدها في الانترنت ونريد استخدامها في مكان آخر بشكل أفضل وبطريقة تجلب لنا زوار أكثر وطبعا هذا يزيد من احتمال فرصة كبيرة في ربح مال أكثر من الانترنت .

عملية جمع البيانات من صفحات مواقع الويب هي عملية لها عدة أسماء منها تجريف الويب أو كشط مواقع الانترنت وتسمى باللغة الانجليزية  Web scraping ، وغالبا ما تكون هذه العملية مدفوعة الثمن في الكثير المواقع مثل خمسات لمن أراد استخراج بينات من موقع ويب محدد وطبعا ستجد الكثير من العملاء يشترون مثل هذه الخدمات ، لأنها تتطلب معرفة أحد اللغات البرمجية التي تقوم بذلك ، وغالبا لن تجد أدوات على الانترنت مجانا تقوم بذلك كما ينبغي .


عملية استخراج بينات الانترنت هي عملية استخدمتها العديد من مواقع الانترنت حيث أنها في الغالب تأتي بالبيانات أو المعلومات فقط من مواقع انترنت أخرى وتقوم بتنسيقها بشكل أفضل ، فمثلا تجد موقع كرة قدم يعرض كل الاحصائيات حول كرة القدم وفي الغالب قد تجده يأتي بالمعلومات تلقائيا من خلال عملية Web scraping من موقع فيفا مثلا ويعرضها لك بشكل منسق ليتناسب مع الزوار .


عملية جمع البيانات من صفحات الويب عن طريق استخدام البرمجيات أو الروبوتات التي تسمى بـ"العنكبوت". تجريف الويب يتم استخدامه لأغراض مختلفة، مثل جمع البيانات لأغراض البحث والتحليل، ومراقبة الأسعار في التجارة الإلكترونية، وجمع معلومات العملاء ومعلومات الاتصال من مواقع الويب.


عملة استخراج البينات من المواقع Web scraping يستخدمها الكثير من الهاكر في تحليل مواقع الانترنت وذلك من عدة لغات برمجية منها Python  وPHP  وJAVA وهذه اللغات هي الأقوى في عملية ويب سكرابينج ، وقد تنشأ موقع أو محرك بحث على الويب من خلال جلب المعلومات من بحث جوجل والتعديل عليها وتنسيقها كما تحب قبل عرضها للزائر ، 


ومع ذلك، فإن تجريف الويب يمكن أن يتسبب في بعض المشاكل، مثل تحميل الخوادم الخاصة بالمواقع بشكل زائد وبشكل غير ضروري، مما يؤدي إلى بطء في تصفح المواقع أو انهيارها. بالإضافة إلى ذلك، يمكن أن يخالف تجريف الويب بعض سياسات الخصوصية التي تحظر جمع البيانات الشخصية دون إذن.

لذلك، يجب استخدام تجريف الويب بحذر واحترام لحقوق المواقع وسياسات الخصوصية، وتجنب جمع البيانات الشخصية دون إذن واضح من المستخدمين.


 خطوات عملية استخراج البيانات بلغة Python 

Python هي اللغة الشائعة في تجريف الويب نظرًا لتعدد استخداماتها وسهولة استخدامها ووفرة المكتبات والأدوات. فيما يلي الخطوات الأساسية لبدء تجريف الويب في Python:

  1. اختر موقعًا لكشطه : حدد موقع الويب الذي تريد استخراج جمع البيانات منه.
  2. فحص موقع الويب : استخدم أدوات مطور المتصفح وعرض سورس كود لفحص HTML للموقع وتحديد العناصر يعني تحديد elements و attributes  التي تحتوي على البيانات التي تحتاجها، وكما تشاهد الصورة السابقة للعناصر.
  1. قم بتثبيت المكتبات الضرورية: يوجد في Python العديد من المكتبات لكشط الويب ، ولكن بعض المكتبات الشائعة هي Beautiful وSoup وRequests و Selenium .
  2. اكتب الكود: استخدم المكتبة المحددة لكشط موقع الويب واستخراج البيانات المطلوبة.
  3. تحليل البيانات: بمجرد استخراج البيانات ، قد تحتاج إلى تنظيفها وتنسيقها قبل استخدامها.
  4. فيما يلي مثال على مقتطف الشفرة باستخدام مكتبة Beautiful Soup لكشط الويب:


import requests
from tkinter import *
from bs4 import BeautifulSoup

tx = ""  
url = 'https://www.tooroq.com/p/apps-google-play.html'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# Extract all the links on the webpage
links = soup.find_all('a')

for link in links:
     if str(link.get('href')).find('play.google') != -1:
        tx = tx + str(link.text) + "\n" + str(link.get('href')) + "\n\n"


root = Tk()
root.geometry("805x525")
root.title("Web Scriping - Tooroq.com")

T = Text(root, height = 30, width = 95 )
T.place(x=20, y=20)
T.insert(1.1 , tx)

root.mainloop()


شرح الكود:

أولا المشروع على لغة Python واستخدمت الواجهات الرسومية من خلال مكتبة tkinter لذلك قد تحتاج إلى الاصدارات الاخيرة من مترجم البايثون لتعمل معك tkinter او شاهد أحد الفيديوهات على يوتوب حول كيفية تثيت tkinter من خلال pip .

ثم استخدمت مكتبة requests التي تقوم بجلب الكود المصدري html لأي رابط انترنت ، إن لم تعمل معك المكتبة أو لم تجدها موجود عليك تثبيتها من خلال pip ، والرابط الذي قمت بجلب البيانات منه هو :

https://www.tooroq.com/p/apps-google-play.html

الاكواد الأخرى جميع اللغات التي تستخدم web scraping تمشي على طريقة واحدة في جلب البيانات من كود ، وكلها تستخدم طريقة واحدة في التعامل مع Element و Attribute الموجودة في html .

النتيجة عند تنفيذ كود بايثون سيظهر على الشكل التالي والغرض من الكود انني استخرجت جميع روابط التطبيقات مع أسمائها الموجةد بداخل صفحة الرابط الذي وضعته.

Web scraping Python


استخراج بيانات من الانترنت بلغة javaFX 

أولا استخدمت برنامج Eclipse وثبت عليه مكتبة openjfx الخاصة بأدوات مطور javafx ، ولاستخدم web scraping على javafx ستحتاج إلى إضافة مكتبة jsoup ، لكي تقوم بتحميلها يجب أن تكون بصيغة jar ، ولكي تضيف المكتبة إلى مشروعك ستجد عدة شروحات على يوتوب تضيف مكتبة jsoup إلى Eclipse .

بعدها استخدمت كود البرمجة التالي لجلب بيانات من رابط انترنت وطبعا قمت بجلب روابط التطبيقات وأسمائها الموجودة في الصفحة الرابط التالي :

https://www.tooroq.com/p/apps-google-play.html


package application;
    
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;

import static javafx.application.Application.launch; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField; 
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text; 
import javafx.scene.control.TextArea; 
import javafx.stage.Stage;

import java.io.IOException;
import java.io.PrintStream;

import org.jsoup.*;  
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;



import static java.nio.charset.StandardCharsets.UTF_8;  
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;


public class Main extends Application {
    
    
     @Override 
       public void start(Stage stage) {
         
          //Creating a Grid Pane 
          GridPane gridPane = new GridPane();    
          //Setting size for the pane 
          gridPane.setMinSize(500, 300);
          //Setting the padding  
          gridPane.setPadding(new Insets(10, 10, 10, 10)); 
          //Setting the vertical and horizontal gaps between the columns 
          gridPane.setVgap(5); 
          gridPane.setHgap(5); 
          //style
          gridPane.setStyle("-fx-background-color: BEIGE;"); 
          
          //Setting the Grid alignment 
          gridPane.setAlignment(Pos.CENTER); 
          
          TextArea tx = new TextArea();  
          tx.setPrefWidth(700);
          tx.setPrefHeight(500); 
          tx.setStyle("-fx-font: normal bold 14px 'serif' "); 
          gridPane.add(tx, 0, 0); 
          
          //Creating Buttons 
          Button button1 = new Button("إبدأ"); 
          button1.setPrefWidth(90);
          button1.setStyle("-fx-font: normal bold 16px 'serif' ; -fx-background-color: darkslateblue; -fx-text-fill: white;"); 
          gridPane.add(button1, 0, 1); 
          
          button1.setOnAction(e -> 
               jsoub(tx) 
          );
          
          // Creating a scene object 
          Scene scene = new Scene(gridPane); 
          // Setting title to the Stage   
          stage.setTitle("Web Scripe Example - (Tooroq.com)"); 
            
          // Adding scene to the stage 
          stage.setScene(scene);
          //Displaying the contents of the stage 
          stage.show(); 
   
          
       } 
     
     
       public static void jsoub(TextArea tx){ 

             try {
                 
                  Document doc = Jsoup.connect("https://www.tooroq.com/p/apps-google-play.html").get();  
                  Elements element = doc.getElementsByTag("a") ;
                  
                  String text = "" ;
                  
                  for(Element x : element ) {
                      if (x.attr("href").contains("play.google")) {
                          text = text + x.text() + "\n" + x.attr("href") + "\n\n" ;
                      }
                  }
                   
                  tx.setText(text + "") ;
                  
                  
            } catch (IOException e1) {
                e1.printStackTrace();
            }
             
           } 
           
     
     
       public static void main(String args[]){ 
          launch(args); 
       } 
       
       
    }


شرح الكود :

استخدمت javafx وهذا يعني أني استخدمت لغة جافا طبعا لكن على الواجهات الرسومية (interface java) ، والكود شبيه تقريبا بكود بايثون ، والجميل في بايثون وجافا اف إكس أنها تنشأ الأدوات (nodes) فقط من خلال الكود بدون الحاجة .

في كود الجافا عند الدالة jsoub(TextArea tx) هي التي قمت فيها باستخدام ويب سكرابينج حيث قمت بجلب كود html للرابط المراد استخراج البيانات منه ، ثم قمت باستخراج وجمع جميع element a الموجود في كود html ثم استخرجت البيانات والنصوص منها ، ثم قمت بجلب الروباط من Beautiful href الموجود داخل كل element .

خلاصة كود جافا عند تنفيذه سيضهر هكذا :

web scraping javafx

ما عليك إلا نسخ الكود على اكليبس وتنفيذه سيظهر لك النتيجة وستعرف بعدها كيف تتعامل مع الكود .


 استخراج البيانات من موقع انترنت بلغة PHP

عمل جلب البيانات من خلال PHP هي التي تعد الأقوى ، حيث أن عمل  (PHP scraper)  لروابط انترنت من خلال php سيجعلك تتعامل معها تلقائيا وتمريرها إلى موقعك على الانترنت ، وطبعا بعد تنسيق البيانات التي يتم جلبها من خلال لغة html و css و javascript و php ، فقط من خلال هذه اللغات وطريقة معرفة استخدام Web scraping على php سيجعلك تبني موقعا ضخما في وقت وجيز .

من قبل كنت استخدمت سكريبت وهذه صورته :

script web scraping php
هذه السكريبت تقوم باستدعائه داخل مشروك في لغة php وهو قادر على جلب html لأي صفحة انترنت ، وبعدها باستطاعتك تتعامل مع الإلمنت والأتربيوت بشكل دقيق وتنفيذ أسرع .

الكود الذي استخدمته داخل المشروع عند جلب السكريبت :


<?php
 
 include('php/simple_html_dom.php');
      
/*
// هذا الكود في حالة أردت جلب معببلومات من رابط علبى الويب    
    $url = 'http://qodorate.com/qodorate/platform/web-scraping/tel.php';
     $html = file_get_html($url);
    
*/
      echo "contact.csv <br><br>"  ;
      echo "Name,Given Name,Additional Name,Family Name,Yomi Name,Given Name Yomi,Additional Name Yomi,Family Name Yomi,Name Prefix,Name Suffix,Initials,Nickname,Short Name,Maiden Name,Birthday,Gender,Location,Billing Information,Directory Server,Mileage,Occupation,Hobby,Sensitivity,Priority,Subject,Notes,Language,Photo,Group Membership,Phone 1 - Type,Phone 1 - Value" . "<br>" ;
      
        if(isset($_POST['codehtml'])){
             $newdossi = $_POST['newdossi'] ;
             $nameconact = $_POST['nameconact'] ;
             $valuex = $_POST['valuex'] ;
             $codehtml = $_POST['codehtml'] ;
             
                   $myFile2 = "codehtml.html";  // انشاء وكتابة على txt
                   $myFileLink2 = fopen($myFile2, 'w+') or die("Can't open file.");
                   $codetxt =  $codehtml  ;
                   fwrite($myFileLink2, $codetxt) ;
                   fclose($myFileLink2); 
                   
             $url = 'codehtml.html';
             $html = file_get_html($url);

             $x =  $valuex ;
             foreach($html->find('span') as $span) {
     
                 if($span->class == "label label-default"){

                      $numtel = trim(strip_tags($span)) ;
                      $contactnum = str_replace('-', '', $numtel); // هذا الأمر لإزالة الشرطة -
                      
                     echo "$nameconact$x,$nameconact$x,,,,,,,,,,,,,,,,,,,,,,,,,,,* myContacts,,+".  $contactnum .  "<br>" ;       
                     $x++ ;
       
                 }   
            }
            
        
        
        
        }

?>


من قبل كنت شرحت هذا السكريبت بشكل أكثر عبر فيديو طرحته على يوتوب مع تحميل السكريبت ، يمكنك الدخول إلى الموضوع التلي للتعرف أكثر حول جمع البيانات من مواقع الانترنت من خلال php

كود لعمل كشط لصفحات مواقع الانترنت






هل اعجبك الموضوع :

تعليقات



التنقل السريع