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処理にも関係していますか?!
よろしくお願いします!