اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

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

جرب القيام باستعراض الكود المصدري للصفحة عن طريق view source page وسترى أنه مماثل لما تم جلبه، فالهيكل المعروض في المتصفح في تبويبة Elements ليس إلا ناتج تصيير أي مكونات وأي عناصر ولو بعد تحميل الصفحة، ولكن الهيكل المعروض ككود مصدري للصفحة هو ما يتم جلبه من الخادم.

  • 1
نشر

دعني أشرح لك الامر بشئ من التفصيل. 

التطبيقات مثل TikTok تستخدم تقنيات متقدمة لتحميل وعرض المحتوى، وتعتمد على الجافا سكريبت وتقنيات الويب المتقدمة مثل AJAX وDynamic Rendering لتحميل المحتوى بشكل ديناميكي أثناء تصفح الصفحة. هذه التقنيات تجعل من الصعب جدًا تجريف كامل محتوى الصفحة باستخدام طرق التجريف التقليدية مثل Requests في بايثون.

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

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

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

  • 1
نشر
بتاريخ 2 ساعة قال عبدالله محمد الحلوة:

كيف يمكنني استعراض الكود المصدري للصفحة عن طريق view source page

اضغط في مكان فارغ بالصفحة بزر الفأرة الأيمن ثم اختر inspect element أو اضغط على ctrl + shift + j، ثم من تبويب elements ستجد كود HTML الخاص بالصفحة:

Snag_11f3be12.thumb.png.f76027ad37019a34129cb6d2b16a312a.png

وتستطيع تحديد أي عنصر بالصفحة بالضغط على علامة الماوس ثم الضغط على العنصر:

Snag_11f4cd9d.png.9724b30c5ec9ef8db129be1a3c37cf45.png

والشرح التالي سيوضح لك ذلك:

لكن للعلم موقع تيك توك يستخدم React، أي أنّ الصفحة في البداية تكون فارغة عند زيارتها ثم يتم حقن المحتوى من خلال جافاسكريبت في الـ DOM.

لذا عملية الـ Scraping  ستكون مختلفة عن المواقع الثابتة static.

  • 1
نشر
بتاريخ 3 ساعة قال عبدالله محمد الحلوة:

اقصد كيف يمكنني جلب كل معلومات الصفحة

بتاريخ 7 ساعة قال عبدالله محمد الحلوة:

كيف يمكنني استعراض الكود المصدري للصفحة عن طريق view source page

هناك فرق بين الكود المصدري الأوّلي للصفحة، وبين كود الصفحة بعد التصيير. الكود المصدري الأوّلي يمكن رؤيته باستخدام باستخدام خيار View page source بعد الضغط بالزر الأيمن للفأرة في أي مكان فارغ في الصفحة. بينما كود الصفحة بعد التصيير يتم الوصول إليه بالخيار inspect بنفس الطريقة.

Screenshot_20240320_093108.thumb.png.5d3cfd6df974b268d46171021be0ddab.png

عندما تستخدم مكتبة requests، فما تقوم به فعليا هو مطابق لنسخ الكود من view page source، ولكن هذا ليس هو الشيء الصحيح في المواقع الديناميكية (مثل TikTok)، هذا يعمل فقط في المواقع التي لا تعتمد على JavaScript لإنشاء المحتوى (يعني مثلا موقع مثل Wikipedia)

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

يمكنك رؤية مثال على كود يستخدم Selenium من هنا :

 

وهذا شرح أطول باللغة العربية لكيفية استخدام Selenium للقيام بمهمة تتطلّب متصفّحا:

https://pythonat.com/articles/أرسل-شكرا-بايثونات-عبر-مكتبة-سيلينيوم/

 

  • 0
نشر
بتاريخ 2 ساعة قال Adnane Kadri:

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

جرب القيام باستعراض الكود المصدري للصفحة عن طريق view source page وسترى أنه مماثل لما تم جلبه، فالهيكل المعروض في المتصفح في تبويبة Elements ليس إلا ناتج تصيير أي مكونات وأي عناصر ولو بعد تحميل الصفحة، ولكن الهيكل المعروض ككود مصدري للصفحة هو ما يتم جلبه من الخادم.

كيف يمكنني استعراض الكود المصدري للصفحة عن طريق view source page

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...