0

言語の異なる 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>棒极了&lt;/b><b>拜&lt;br>拜&lt;/b></div>

私が望む出力は次のようなものです:

{'This is awesome': '棒极了' , 'bye': '拜'} (翻訳は完璧ではありません:)

辞書の形である必要はありませんが、この種の情報を保存するには辞書の形が最適だと思います。

ここに私が持っているいくつかの考えがありますが、より良い方法があるかどうかはわかりません. 1.英語のテキストを含む要素リーフ要素を見つけ、セレクターまたは何かを見つけてこの要素を一意に見つけ、中国語のWebサイトでセレクター(異なるhrefを除く)を使用して対応する要素を見つけ、中国語の翻訳を見つけます。

  1. どこかに私の知らない方法があるのか​​もしれませんが、こんな感じだと思います。BeautifulSoup(src).findAllLeaves(text!='') を使用して、テキストを含むすべての leave ノードのリストを取得します。次に、英語と同じ要素を含む中国語の Web サイトに対して同じことを行います。次に、これら 2 つのリストに基づいてルックアップ dict を作成します。

  2. または、prettify() を使用して適切にフォーマットされた方法で HTML ツリーをリストし、すべての行をループして対応する中国語を見つけます。

私の質問を十分に明確に説明したかどうかを教えてください。これを実装する方法についてのアイデアがあれば役立ちます。効率的なシェル コマンド (grep、sed、awk) または他の言語も歓迎します。

どうもありがとう!

4

1 に答える 1

0

あなたが与えたhtmlファイル構造については、

>>> soup = BeautifulSoup(content)
>>> soup.findAll('b') 
[<b>This is awesome</b>, <b>bye<br />bye</b>]

<p>、 などの異なるタグ内のテキストを抽出するには、複数の findAll 文が必要になる場合があります<strong>
それが役立つことを願っています。

于 2013-07-31T07:10:23.007 に答える