言語の異なる 2 つのサイトを持つ Web サイトがあります。私がそれらを見たとき、ウェブサイトはまったく同じ html 構造に従っていますが、唯一の違いはタグに含まれるリンクの値です (この場合、英語は英語を指し、中国語は中国語を指します)。テキストを含むすべてのリーフ ノードをループして、翻訳用のルックアップ テーブルを作成できるように、BeautifulSoup に便利な方法があるのではないかと考えています。
コードは次のようになります。
www.foo.com/cn/bar/lang=en
<div href="ww.foo.com/cn/bar1/lang=en"><b>This is awesome</b><b>bye<br>bye</b></div>
www.foo.com/cn/bar/lang=cn
<div href="ww.foo.com/cn/bar1/lang=cn"><b>棒极了</b><b>拜<br>拜</b></div>
私が望む出力は次のようなものです:
{'This is awesome': '棒极了' , 'bye': '拜'} (翻訳は完璧ではありません:)
辞書の形である必要はありませんが、この種の情報を保存するには辞書の形が最適だと思います。
ここに私が持っているいくつかの考えがありますが、より良い方法があるかどうかはわかりません. 1.英語のテキストを含む要素リーフ要素を見つけ、セレクターまたは何かを見つけてこの要素を一意に見つけ、中国語のWebサイトでセレクター(異なるhrefを除く)を使用して対応する要素を見つけ、中国語の翻訳を見つけます。
どこかに私の知らない方法があるのかもしれませんが、こんな感じだと思います。BeautifulSoup(src).findAllLeaves(text!='') を使用して、テキストを含むすべての leave ノードのリストを取得します。次に、英語と同じ要素を含む中国語の Web サイトに対して同じことを行います。次に、これら 2 つのリストに基づいてルックアップ dict を作成します。
または、prettify() を使用して適切にフォーマットされた方法で HTML ツリーをリストし、すべての行をループして対応する中国語を見つけます。
私の質問を十分に明確に説明したかどうかを教えてください。これを実装する方法についてのアイデアがあれば役立ちます。効率的なシェル コマンド (grep、sed、awk) または他の言語も歓迎します。
どうもありがとう!