Pyquery делает недействительным HTML-код - PullRequest
1 голос
/ 18 февраля 2011

Я использовал pyquery для создания веб-страницы:

> page = PyQuery('<html><head><script type="text/javascript" src="jquery-1.4.min.js"></script><script type="text/javascript" src="tools.min.js"></script></head><body></body></html>')
> print page
Output: <html><head><script type="text/javascript" src="jquery-1.4.min.js"/><script type="text/javascript" src="tools.min.js"/></head><body/></html>

Однако теги script (и body) не должны заканчиваться таким образом. Firefox игнорирует остальную часть заголовка.

Я попытался разбить вышеперечисленное на отдельные элементы (т.е. добавить один тег скрипта за раз), но безрезультатно:

> page = PyQuery('<html><head></head></html>')
> page.find('head').append('<script type="text/javascript" src="jquery-1.4.min.js"/></script>')
> page.find('head').append('<script type="text/javascript" src="tools.min.js"></script>')
Output: <html><head><script type="text/javascript" src="jquery-1.4.min.js"/><script type="text/javascript" src="tools.min.js"/></head><body/></html>

То же самое происходит с <iframe/> тегами (вынуждены использовать их из-за YouTube), они не закрываются firefox, и весь последующий код игнорируется.

Как заставить принудительно закрывать их с помощью отдельного тега закрытия, как я полагаю, в соответствии со стандартами HTML.

О, и если кому-то интересно, я не делаю все это в beautifulsoup, потому что (1) я получаю ошибки beautifulsoup и (2) это устаревший пакет, автор прекратил поддерживать его год или два назад.

Ответы [ 2 ]

1 голос
/ 02 ноября 2012

Вы должны использовать print page.__html__() для вывода HTML или, что лучше, print page.html(method='html')

1 голос
/ 02 августа 2011

Попробуйте:

page = PyQuery('<html><head><script type="text/javascript" src="jquery-1.4.min.js">\n</script><script type="text/javascript" src="tools.min.js">\n</script></head><body></body></html>')

Также работает с iframe.

...