2016-11-18 3 views
1

lxml을 사용하여 html 데이터를 삭제하지만 일부 경우 lxml이 유효한 태그도 제거합니다. 그것은 유효한 호스트가 iframe 태그를 제거하지만 이중 슬래시 (//)lxml 더블 슬래시 iframe을 제거합니다

코드 예제로 시작은 잘

>>> 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>' 
작동 (더블 슬래시없이)

>>> cleaner = Cleaner(host_whitelist=['www.youtube.com']) 
>>> iframe = '<iframe src="//www.youtube.com/embed/S2S5I5GHkDQ"></iframe>' 
>>> cleaner.clean_html(iframe) 
'<div></div>' 

하지만 정상 URL에

lxml이 유효한 URL임을 이해하기 위해해야 ​​할 일은 무엇입니까?

감사합니다. 당신은 클리너 (http://lxml.de/3.4/api/lxml.html.clean.Cleaner-class.html)에 대한 문서를 보면

답변

0

, 기본적으로이 매개 변수를 True로 설정되어 있는지 나타납니다

embedded: 
    Removes any embedded objects (flash, iframes) 
frames: 
    Removes any frame-related tags 

그래서 내 첫 번째 본능은 당신이 볼 수 cleaner = Cleaner(host_whitelist=['www.youtube.com'], embedded=False)

+0

을 시도하는 것 there "whitelist_tags : host_whitelist에 포함될 수있는 태그 집합 ** 기본값은 iframe 및 embed입니다 ** 스크립트와 같은 다른 태그를 포함하거나 더 많은 제어를 위해 allow_embedded_url을 구현하고자 할 수 있습니다. 모든 태그를 포함합니다. " 또한 내 예제에서 볼 때 호스트 (https)에 제공된 스키마가 작동하고 있으므로 "포함 된"인수와 관련이 없다는 것을 알 수 있습니다 – user3164429