بيثون XML.DOM و BAD XML
-
18-09-2019 - |
سؤال
أحاول استخراج بعض البيانات من صفحات HTML المختلفة باستخدام برنامج Python. لسوء الحظ، تحتوي بعض هذه الصفحات على بيانات إدخال المستخدم التي تحتوي في بعض الأحيان على أخطاء "طفيفة" - وهي عدم تطابق العلامة.
هل هناك طريقة جيدة لديك Python's Xml.dom حاول تصحيح الأخطاء أو شيء من هذا النوع؟ بدلا من ذلك، هل هناك طريقة أفضل لاستخراج البيانات من صفحات HTML التي قد تحتوي على أخطاء؟
المحلول
يمكنك استخدام أتش تي أم أل لتنظيف، أو حساء جميل لتحليل. يمكن أن يكون لديك لحفظ النتيجة إلى ملف TEMP، ولكن يجب أن تعمل.
هتافات،
نصائح أخرى
اعتدت على استخدام الجماعة الجميلة لهذه المهام ولكن الآن لقد تحولت إلى html5lib. (http://code.google.com/p/html5lib/) الذي يعمل بشكل جيد في العديد من الحالات التي تفشل فيها جمال الجميل
البديل الآخر هو استخدام "حساء العنصر" (http://effbot.org/zone/element-soup.htm.) وهو مجمع لحساء جميل باستخدام elesstree
إذا كان 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)؛ }