سؤال

أنا رمز الكثير من المحلات. حتى الآن ، كنت أستخدم متصفح HTMLUNIT Headless لتحليل أتمتة المتصفح.

الآن ، أريد فصل كلتا المهامتين.

نظرًا لأن 80 ٪ من عملي ينطوي على التحليل فقط ، أريد استخدام محلل HTML خفيف لأنه يستغرق الكثير من الوقت في htmlunit لتحميل الصفحة أولاً ، ثم الحصول على المصدر ثم تحليله.

أريد أن أعرف أي محلل HTML هو الأفضل. سيكون المحلل أفضل إذا كان قريبًا من محلل Htmlunit.


تعديل:

على الأفضل ، أريد على الأقل الميزات التالية:

  1. سرعة
  2. سهولة تحديد موقع أي htmlelement بواسطة "المعرف" أو "الاسم" أو "نوع العلامة".

سيكون من الجيد بالنسبة لي إذا لم ينظف رمز HTML القذر. لست بحاجة إلى تنظيف أي مصدر HTML. أنا فقط بحاجة إلى أسهل طريقة للتحرك عبر htmlelements وحصاد البيانات منها.

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

المحلول

Self Plug: لقد أصدرت للتو محلل Java HTML جديد: JSoup. أذكرها هنا لأنني أعتقد أنها ستفعل ما أنت عليه.

خدعة الحزب هي بناء جملة محدد CSS للعثور على عناصر ، على سبيل المثال:

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
Elements links = doc.select("a");
Element head = doc.select("head").first();

انظر المحدد Javadoc لمزيد من المعلومات.

هذا مشروع جديد ، لذا فإن أي أفكار للتحسين مرحب بها للغاية!

نصائح أخرى

أفضل ما رأيته حتى الآن هو htmlcleaner:

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

مع HTMLCleaner ، يمكنك تحديد موقع أي عنصر باستخدام XPath.

للاطلاع على محلات HTML الأخرى هذا السؤال جدا.

أقترح محلل المدقق, ، بناءً على خوارزمية تحليل HTML5. إنه المحلل المستخدم في موزيلا من 2010-05-03

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