Pyquery使html代码无效

时间:2011-02-18 16:08:20

标签: html building pyquery

我使用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>

虽然脚本(和正文)标签不应该这样结束。 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标准强制pyquery使用单独的close标签来关闭它们。

哦,如果有人在想,我不会在beautifulsoup中做这一切,因为(1)我得到了beautifulsoup错误,(2)这是一个弃用的包,作者在一两年前停止支持它。

2 个答案:

答案 0 :(得分:1)

尝试:

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。

答案 1 :(得分:1)

您应该使用print page.__html__()转储html,或者更好的print page.html(method='html')