1

我正在使用 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 关闭,并且所有进行中的代码都被忽略。

我相信,如何强制 pyquery 使用单独的关闭标签关闭这些标签,这是根据 html 标准。

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

4

2 回答 2

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。

于 2011-08-02T01:30:54.427 回答
1

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

于 2012-11-02T13:08:29.890 回答