-2

Python を使用してファイル名の一部をフィールドとして CSV ファイルに保存することは可能ですか? たとえば、名前が付けられた一連の HTML ファイルがあり、最初の 10 文字 (最初の数字は常に 9 桁、次にスペース) を削除して、残りの部分を保存できるようにしたいと考えています"000000001 8375739.html""000000021 5748922937574.html"ファイル名 (.html を除く) を CSV ファイルの ID と呼ばれるフィールドに入力し、このフィールド自体に html ファイルの内容が入力されます。実際、私がやろうとしているのは、Beautiful Soup を使用して HTML ファイルからテキストを抽出し、最初の行を「タイトル」というフィールドに保存し、残りのテキストを「本文」というフィールドに保存して保存することです。 「ID」と呼ばれるフィールドのファイル名の 2 番目の部分。HTMLからテキストへの部分は完全に機能しますが、残りの部分を理解できないようです。

これは、HTML を取り除き、(単一の) テキスト ファイルに書き込むコードです。glob を再び使用する必要があると思いますか、それとも igloo を使用する必要がありますか?

import os
import glob
import codecs
import csv
from bs4 import BeautifulSoup
dics = [{

path = "c:\\users\\zac\\downloads\\"

for infile in glob.glob(os.path.join(path, "*.html")):
    markup = (infile)
    soup = BeautifulSoup(codecs.open(markup, "r", "utf-8").read())
    with open("extracted.txt", "a") as myfile:
        myfile.write(soup.get_text())

以下は HTML のサンプルです。すべてがまったく同じというわけではありませんが、基本的には同じ形式に従っています。

<table>
      <tbody>
        <tr>
          <td></td>
          <td></td>

          <td>
            <p><a>Some Sample Text</a> </p>
            <p><a>A slightly larger body of text. Thus far, we see that the current python script is placing this directly under the previous text.</a> </p>
            <h3><a>And a final bit of text, this has so far been placed below the previous text, making three lines of text (or more, depending on how long the middle block is).</a></h3>

          <td ></td>

          <td></td>
        </tr>

        <tr>
          <td></td>
          <td></td>
        </tr>
        <tr>
          <td></td>
          <td></td>
        </tr>
      </tbody>
    </table>
4

1 に答える 1

0
fname = "000000001 8375739.html"
trash, name = fname.split(" ")
data, trash = name.split(".")

print data

--output:--
8375739

HTML ファイルのサンプルを投稿しないことが、質問をする正しい方法だと思うのはなぜですか? あなたの意見では、すべての html ファイルは同一なので、BS はファイルを読み取って必要なデータを分離できますか?

于 2013-04-27T00:27:36.090 に答える