xml.dom Python et XML mauvais
-
18-09-2019 - |
Question
Je suis en train d'extraire des données de différentes pages HTML à l'aide d'un programme de python. Malheureusement, certaines de ces pages contiennent des données entrées par l'utilisateur qui a de temps en temps des erreurs « légères » - tag à savoir désadaptation
.Y at-il un bon moyen d'avoir la xml.dom de python essayer de corriger les erreurs ou quelque chose du genre? Sinon, est-il une meilleure façon d'extraire des données à partir des pages HTML qui peuvent contenir des erreurs?
Autres conseils
Je l'habitude d'utiliser BeautifulSoup pour ces tâches, mais maintenant je l'ai déplacé à HTML5lib ( http://code.google.com/p/html5lib/ ) qui fonctionne bien dans de nombreux cas où BeautifulSoup échoue
autre solution consiste à utiliser " soupe élément " ( http: //effbot.org/zone/element-soup.htm ) qui est un wrapper pour Belle soupe en utilisant elementTree
lxml fait un travail décent à l'analyse syntaxique HTML invalide.
D'après leur documentation Belle soupe et html5lib effectuer parfois mieux en fonction de l'entrée. Avec lxml vous pouvez choisir d'utiliser l'analyseur, et d'y accéder via une API unifiée.
Si Jython est acceptable pour vous, tagsoup est très bon à l'analyse syntaxique indésirable -. Si elle est, je trouve les bibliothèques JDOM beaucoup plus facile à utiliser que d'autres alternatives xml
Ceci est un extrait d'une démo mockup à voir avec écran de grattage du planificateur de voyage de TfL:
private Document getRoutePage(HashMap params) throws Exception { String uri = "http://journeyplanner.tfl.gov.uk/bcl/XSLT_TRIP_REQUEST2"; HttpWrapper hw = new HttpWrapper(); String page = hw.urlEncPost(uri, params); SAXBuilder builder = new SAXBuilder("org.ccil.cowan.tagsoup.Parser"); Reader pageReader = new StringReader(page); return builder.build(pageReader); }