Ich verwende Lxml, um HTML-Daten zu bereinigen, aber in einigen Fällen entfernt Lxml auch die gültigen Tags. Es entfernt iframe-Tags, die einen gültigen Host haben, sondern beginnt mit Doppelschrägstriche (//)lxml entfernt doppelten Schrägstrich iframe
Codebeispiel:
>>> cleaner = Cleaner(host_whitelist=['www.youtube.com'])
>>> iframe = '<iframe src="//www.youtube.com/embed/S2S5I5GHkDQ"></iframe>'
>>> cleaner.clean_html(iframe)
'<div></div>'
aber für den normalen Urls (ohne doppelte Schrägstriche) es fein
>>> cleaner = Cleaner(host_whitelist=['www.youtube.com'])
>>> iframe = '<iframe src="https://www.youtube.com/embed/S2S5I5GHkDQ"></iframe>'
>>> cleaner.clean_html(iframe)
'<iframe src="https://www.youtube.com/embed/S2S5I5GHkDQ"></iframe>'
arbeitet
Was muss ich tun, um lxml zu verstehen, dass es eine gültige URL ist?
Danke.
Sie sehen können, um zu versuchen, wäre there "whitelist_tags: Eine Reihe von Tags, die in host_whitelist enthalten sein können. ** Der Standard ist iframe und embed ** Sie möchten vielleicht andere Tags wie script hinzufügen, oder Sie möchten allow_embedded_url für mehr Kontrolle implementieren. Setzen Sie auf Keine um alle Tags einzuschließen. " Auch Sie können in meinem Beispiel sehen, dass, wenn das Schema für den Host (https) zur Verfügung gestellt wird, es funktioniert, so ist es nicht mit dem "Embedded" -Argument verbunden – user3164429