我正在尝试使用 python requests 模块获取远程页面,重建 DOM 树,进行一些处理并将结果保存到文件中。当我获取一个页面然后将其写入文件时,一切正常(我稍后可以在浏览器中打开一个 html 文件并且它被正确呈现)。
但是,如果我创建一个 pyquery 对象并进行一些处理,然后使用 str 转换将其保存,则会失败。具体来说,像 && 等特殊字符会在已保存源的脚本标签中被修改(由 pyquery 应用引起),它会阻止页面正确呈现。
这是我的代码:
import requests
from lxml import etree
from pyquery import PyQuery as pq
user_agent = {'User-agent': 'Mozilla/5.0'}
r = requests.get('http://www.google.com',headers=user_agent, timeout=4)
DOM = pq(r.text)
#some optional processing
fTest = open("fTest.html","wb")
fTest.write(str(DOM))
fTest.close()
所以,问题是:如何确保在应用 pyquery 后特殊字符不会被转义?我想它可能与 lxml(pyquery 的父库)有关,但是在网上进行了繁琐的搜索并尝试了不同的对象序列化方式后,我仍然没有成功。也许这也与Unicode处理有关?!
提前谢谢了!