سؤال

كيف بذكاء تحليل البيانات التي تم إرجاعها من خلال نتائج البحث في الصفحة ؟

على سبيل المثال, دعونا نقول أن وأود أن إنشاء خدمة ويب الذي يبحث عن الكتب على الإنترنت من خلال تحليل نتائج البحث من العديد من الكتاب مقدمي خدمات المواقع.أتمكن من الحصول على الخام HTML البيانات من الصفحة ، والقيام ببعض regexs لجعل البيانات عن خدمة ويب ، ولكن إذا كان أي من المواقع تغيير تنسيق الصفحات ، قانون بلدي فواصل!

آر إس إس هو في الواقع رائعة الخيار ، ولكن العديد من المواقع لا XML/JSON القائمة على البحث.

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

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

المحلول

لقد فعلت بعض هذه الآونة الأخيرة و هنا هي بلدي التجارب.

هناك ثلاثة مناهج أساسية:

  1. التعبيرات العادية.
    • الأكثر مرونة وأسهل للاستخدام مع فضفاضة منظم معلومات وتغيير الأشكال.
    • من الصعب القيام الهيكلية/الوسم التحليل ، ولكن من الأسهل أن تفعل مطابقة النص.
    • بنيت في التحقق من صحة البيانات التنسيق.
    • الحفاظ عليها أصعب من غيرها ، لأن لديك لكتابة التعبير العادية لكل نمط تريد استخدامها لاستخراج/تحويل الوثيقة
    • عموما أبطأ من 2 و 3.
    • يعمل بشكل جيد على قوائم وبالمثل تنسيق العناصر
    • جيد regex التنمية/أداة اختبار و بعض صفحات عينة سوف تساعد.لقد حصلت على الأشياء الجيدة ليقوله عن RegexBuddy هنا.محاولة التجريبي.
    • لقد كان أكثر نجاحا مع هذا.المرونة يتيح لك العمل مع القذر في البرية التعليمات البرمجية HTML.
  2. تحويل HTML الى XHTML و استخدام XML استخراج الأدوات. تنظيف HTML, تحويله إلى القانونية XHTML, واستخدام XPath/XQuery/ X-أيا كان الاستعلام على أنها بيانات XML.
    • الأدوات:TagSoup, HTMLTidy, الخ
    • نوعية HTML إلى XHML التحويل مهم جدا ، و متغير بدرجة كبيرة.
    • أفضل حل إذا كانت البيانات التي تريد منظم من قبل HTML تخطيط العلامات (البيانات في الجداول HTML, القوائم, DIV/SPAN مجموعات, الخ)
    • الأكثر ملاءمة للحصول على رابط هياكل الجداول المتداخلة, الصور, قوائم, وهكذا دواليك
    • يجب أن تكون أسرع من الخيار 1 ، لكن أبطأ من الخيار 3.
    • يعمل بشكل جيد إذا كان المحتوى تغييرات التنسيق/هو متغير ، ولكن هيكل الوثيقة/تخطيط لا.
    • إذا كانت البيانات ليست تنظيما من علامات HTML ، كنت في ورطة.
    • يمكن استخدامها مع الخيار 1.
  3. محلل مولد (ANTLR, الخ) -- إنشاء قواعد لتحليل & تحليل الصفحة.
    • لم أحاول هذا لأنه غير مناسب لي (فوضوي) صفحات
    • أنسب إذا HTML هيكل منظم جدا جدا ثابت, العادية, و لا يتغير أبدا.
    • استخدام هذا إذا كان هناك سهلة لوصف الأنماط في المستند ، لكنها لا تنطوي على علامات HTML و تنطوي على العودية أو السلوكيات المعقدة
    • لا تتطلب XHTML الإدخال
    • أسرع الإنتاجية عموما
    • كبيرة منحنى التعلم ، ولكن من الأسهل للحفاظ على

لقد عبثت مع ويب الحصاد الخيار 2 ، ولكن يمكنني العثور على جملة أن تكون من نوع غريب.مزيج من XML و بعض الزائفة جافا لغة البرمجة.إذا كنت مثل جافا ، مثل XML-أسلوب استخراج البيانات (XPath ، XQuery) التي قد تكون تذكرة لك.


تحرير:إذا كنت تستخدم التعابير العادية ، تأكد من استخدام المكتبة مع كسول محددو الكمية و التقاط مجموعات!PHP الأكبر regex المكتبات تفتقر إلى هذه و هم لا غنى عنه من أجل مطابقة البيانات بين فتح/إغلاق علامات HTML.

نصائح أخرى

دون ثابت HTML هيكل تحليل, أكره أن الحفاظ على التعبيرات العادية للعثور على البيانات.قد يكون أكثر حظا تحليل HTML من خلال السليم محلل أن يبني الشجرة.ثم حدد العناصر ...التي من شأنها أن تكون أكثر للصيانة.

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

بهذه الطريقة, عليك فقط الاختيار على <a href="blah" class="cache_link">... تحول إلى <a href="blah" class="cache_result">... أو أيا كان.

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

أو إرسال رسالة بريد إلكتروني الموقع تفيد قضية XML API ...كنت قد استأجرت!

لم تذكر أي كومة التكنولوجيا التي تستخدمها.إذا كنت تحليل HTML, كنت استخدم التوزيع مكتبة:

هناك أيضا webservices أن تفعل بالضبط ما تقوله - التجارية الحرة.فإنها تتخلص من المواقع تقدم خدمة ويب الواجهات.

و عامة خدمة ويب التي توفر بعض كشط الشاشة هو ياهو الأنابيب. السابقة ستاكوفيرفلوو على هذا السؤال

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

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

وعلى أمل أن يساعد قليلا!

وتحرير: وإذا كنت تستخدم PHP انصح SimpleHTMLDOM

هل نظرت إلى استخدام مكتبة أتش تي أم أل التلاعب؟ روبي لديه بعض منها لطيف جدا. على سبيل المثال hpricot

ومع مكتبة جيدة هل يمكن تحديد أجزاء من الصفحة التي تريد استخدام محددات CSS أو كسباث. وستكون هذه صفقة جيدة أكثر قوة من استخدام regexps.

مثال من ويكي hpricot:

 doc = Hpricot(open("qwantz.html"))
 (doc/'div img[@src^="http://www.qwantz.com/comics/"]')
   #=> Elements[...]

وأنا متأكد من أنك يمكن أن تجد مكتبة أن يفعل أشياء مماثلة في .NET أو بيثون، الخ.

جرب البحث في قوقل عن الشاشة تجريف + اللغة التي تفضلها.أنا أعرف عدة خيارات الثعبان, قد تجد ما يعادله اللغة المفضلة:

  • جميل الحساء
  • مكننة:على غرار بيرل WWW:مكننة.يعطيك متصفح مثل كائن إلى ineract مع صفحات الويب
  • lxml:بيثون ملزمة libwww
  • scrapemark:يستخدم قوالب أن تتخلص من القطع الصفحات
  • pyquery:يسمح لك لجعل مسج الاستعلامات في xml/xhtml الوثائق
  • scrapy:عالية المستوى تجريف الزحف على شبكة الإنترنت إطار الكتابة العناكب الزحف و تحليل صفحات الويب

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

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

وقد جافا وتنفيذ C ++، قد عمل!

والبقدونس على http://www.parselets.com تبدو بقعة جميلة.

وهذا يتيح لك تحديد "parslets" استخدام JSON ما كنت تعرف ما الذي تبحث عنه على الصفحة، ويوزع بعد ذلك أن البيانات بها لك.

وكما قال آخرون، يمكنك استخدام محلل HTML أن يبني التمثيل DOM والاستعلام مع كسباث / كسكيري. لقد وجدت مادة مثيرة للاهتمام للغاية هنا: جافا النظرية والممارسة: شاشة تجريف مع كسكيري - <وأ href = "http://www.ibm.com/developerworks/xml/library/j-jtp03225.html" يختلط = "نوفولو "> http://www.ibm.com/developerworks/xml/library/j-jtp03225.html

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

وأما مسألة متابعة - كيف على الارض لا تلك المواقع مكشطة من نوع كبيرة تفعل ذلك؟ لقد رأيت محرك بحث العمل (على سبيل المثال indeed.com) التي تفحص آلاف المواقع! غير أن الآلاف من regexes؟ في أقرب إلى المستحيل ...

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