سؤال

أحاول استخراج بعض البيانات من صفحات HTML المختلفة باستخدام برنامج Python. لسوء الحظ، تحتوي بعض هذه الصفحات على بيانات إدخال المستخدم التي تحتوي في بعض الأحيان على أخطاء "طفيفة" - وهي عدم تطابق العلامة.

هل هناك طريقة جيدة لديك Python's Xml.dom حاول تصحيح الأخطاء أو شيء من هذا النوع؟ بدلا من ذلك، هل هناك طريقة أفضل لاستخراج البيانات من صفحات HTML التي قد تحتوي على أخطاء؟

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

المحلول

يمكنك استخدام أتش تي أم أل لتنظيف، أو حساء جميل لتحليل. يمكن أن يكون لديك لحفظ النتيجة إلى ملف TEMP، ولكن يجب أن تعمل.

هتافات،

نصائح أخرى

اعتدت على استخدام الجماعة الجميلة لهذه المهام ولكن الآن لقد تحولت إلى html5lib. (http://code.google.com/p/html5lib/) الذي يعمل بشكل جيد في العديد من الحالات التي تفشل فيها جمال الجميل

البديل الآخر هو استخدام "حساء العنصر" (http://effbot.org/zone/element-soup.htm.) وهو مجمع لحساء جميل باستخدام elesstree

lxml هل وظيفة لائقة في تحليل HTML غير صالح.

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

إذا كان Jython مقبولا بالنسبة لك، فإن Tagneup جيدة جدا في تحليل غير المرغوب فيه - إذا كان الأمر كذلك، فقد وجدت مكتبات JDG Libraries أسهل بكثير من بدائل XML الأخرى.

هذا هو مقتطف من الحثاء التجريبي للقيام بشاشة تجريف من مخطط رحلة TFL:

 وثيقة خاصة GetRoutepage (Parms Hashmap) رمي استثناء {string uri = "http://journeyplanner.tfl.gov.uk/bcl/xslt_trip_request2"؛ HPWrapper HW = HTPRWrapper جديد ()؛ صفحة سلسلة = hw.urlencpost (URI، Params)؛ Saxbuilder Builder = Saxbuilder جديد ("Org.ccil.cowan.tagsoup.parser")؛ قارئ PageReader = New StringReader (صفحة)؛ العودة builder.build (PageReadeader)؛ }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top