使用Python和Beautiful Soup创建CSV文件

时间:2013-04-27 00:20:08

标签: python beautifulsoup

是否可以使用Python将文件名的一部分保存为CSV文件中的字段?我有一系列名为"000000001 8375739.html"的HTML文件,一直到"000000021 5748922937574.html",我希望能够删除前10个字符(第一个数字总是9位数,然后空格)然后将文件名的其余部分(减去.html)保存到CSV文件中名为ID的字段中,然后由html文件的内容填充。事实上,我正在尝试做的是使用Beautiful Soup从HTML文件中提取文本,将第一行保存在名为“title”的字段中,将其余文本保存在名为“body”的字段中并保存名为“ID”的字段中文件名的第二部分。 html to text部分工作得很好,但是我似乎无法完成其余部分。

这是剥离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>

1 个答案:

答案 0 :(得分:0)

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

print data

--output:--
8375739

为什么你认为不发布你的html文件样本是问你问题的正确方法?在您看来,所有html文件都是相同的,因此BS可以读取文件并分离出您需要的数据吗?