我使用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)这是一个弃用的包,作者在一两年前停止支持它。
答案 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')