سؤال

أسمع أشخاصًا يكتبون هذه البرامج طوال الوقت وأعرف ما يفعلونه، ولكن كيف يفعلون ذلك فعليًا؟أنا أبحث عن مفاهيم عامة.

هل كانت مفيدة؟

المحلول

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

وفي كثير من الأحيان، ويشير screenscaping إلى عميل على شبكة الإنترنت أن يوزع صفحات HTML من موقع المستهدفة لاستخراج البيانات المنسقة. ويتم ذلك عند موقع على شبكة الانترنت لا تقدم تغذية RSS أو API REST للوصول إلى البيانات بطريقة برمجية.

وأحد الأمثلة على مكتبة المستخدمة لهذا الغرض هي Hpricot للحصول على روبي، التي تعد واحدة من أفضل -architected موزعي HTML تستخدم لكشط الشاشة.

نصائح أخرى

والكثير من إجابات دقيقة هنا.

وماذا لا أحد قال و<م> لا تفعل ذلك!

وشاشة كشط هو ما تفعله عندما يكون قدمت لا أحد لك واجهة المقروءة آليا معقولة. من الصعب أن يكتب، وهشة.

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

وبطبيعة الحال، في بعض الأحيان لديك أي خيار: (

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

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

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

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

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

إليك القليل من عملية تجريف الشاشة التي تم تنفيذها جافا سكريبت, ، باستخدام jQuery (ليس خيارًا شائعًا، نظرًا لأن الاستخراج عادةً ما يكون نشاطًا لخادم العميل):

//Show My SO Reputation Score
var repval = $('span.reputation-score:first'); alert('StackOverflow User "' + repval.prev().attr('href').split('/').pop() + '" has (' + repval.html() + ') Reputation Points.');

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

إذا قام SO بتغيير بنية DOM / أسماء فئات العناصر / اصطلاحات مسار URI، فستتوقف جميع الرهانات وقد لا تعمل بعد الآن - وهذا هو الخطر المعتاد في مساعي تجريف الشاشة حيث لا يوجد عقد/تفاهم بين الأطراف (المكشط والمكشط [نعم لقد اخترعت للتو كلمة]).

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

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

وفي كثير من الأحيان، ويشير screenscaping إلى عميل على شبكة الإنترنت أن يوزع صفحات HTML من موقع المستهدفة لاستخراج البيانات المنسقة. ويتم ذلك عند موقع على شبكة الانترنت لا تقدم تغذية RSS أو API REST للوصول إلى البيانات بطريقة برمجية.

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

وشاشة كشط هو ما تفعله عندما يكون قدمت لا أحد لك واجهة المقروءة آليا معقولة. من الصعب أن يكتب، وهشة.

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

وأحد الأمثلة على مكتبة المستخدمة لهذا الغرض من ذلك هو Hpricot لروبي، التي تعد واحدة من موزعي HTML هندستها أفضل تستخدم لكشط الشاشة.

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

<اقتباس فقرة>   

وشاشة كشط هو ما تفعله عندما يكون قدمت لا أحد لك واجهة المقروءة آليا معقولة. من الصعب أن يكتب، وهشة.

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

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

string pageContents = new WebClient("www.stackoverflow.com").DownloadString();
int numberOfPosts = // regex match

والواضح في بيئة واسعة النطاق تريد ان تكون كتابة التعليمات البرمجية أكثر قوة من السابق.

<اقتباس فقرة>   

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top