3

テキストの本文だけを取得するhtmlファイルがあります

1行だけ印刷したい

今私は印刷しています

for line in newName.body(text=True):
    print line

これにより、体のすべてが得られます。私が望むのは、次のように印刷することです

for line in newName.body(text=True):
    print line[257:_____] # this is where i need help

_ _ または終了する別の数字を選択する代わりに、次のように改行文字に移動したい

for line in newName.body(text=True):
    print line[257:'\n'] 

しかし、それは機能しません。どうすればそれを機能させることができますか?

私が作業しているテキストは本文の前にあり、必要なテキストは /pre /body です

4

3 に答える 3

8

.partition()メソッドを使用して最初の行を取得できます。

first_line = newName.body.getText().partition("\n")[0]

仮定newNameBeautifulSoupオブジェクトです。通常はsoup.

<pre>HTML の最初のタグからテキストを取得するには:

text = soup.pre.string

テキスト内の行のリストを取得するには:

list_of_lines = text.splitlines()

テキストに行末マーカーを保持したい場合:

list_of_lines = text.splitlines(True)

リストから i 番目の行を取得するには:

ith_line = list_of_lines[i]

注: ゼロベースのインデックス付けは、たとえばi = 23 行目に対応します。

于 2013-02-10T18:52:53.280 に答える
2

HTMLファイルに複数の行があるという保証はありません。Webページは行に配置できますが、ページの構造がマークアップの構造と一致している必要はありません。その逆も同様です。

念のため、これを試してください。

print len(newName.body(text = True).split('\ n'))

値が>1の場合、次のように必要な行を取得できるはずです。

newName.body(text = True).split('\ n')[257]

おそらく最も優雅な方法ではありませんが、実際に複数の行がある場合は機能します。

于 2013-02-10T19:56:10.623 に答える
2

line[127:line.find('\n')]それはあなたがそれからのものであると確信しているので、それはあなたが望むものですか127\n

于 2013-02-10T20:13:04.103 に答える