BeautifulSoup + xlwt:将HTML表的内容放在Excel中

时间:2012-04-19 06:02:13

标签: python html excel beautifulsoup html-table

我正在尝试(使用一个小的python脚本)将HTML表格的内容从在线网页放入Excel表格中。

除了“Excel事物”之外,一切运作良好。

#!/usr/bin/python
# --*-- coding:UTF-8 --*--

import xlwt
from urllib2 import urlopen
import sys
import re
from bs4 import BeautifulSoup as soup
import urllib

def BULATS_IA(name_excel):
    """ Function for fetching the BULATS AGENTS GLOBAL LIST"""

 ws = wb.add_sheet("BULATS_IA") # I add a sheet in my excel file

    Countries_List = ['United Kingdom','Albania','Andorra']
    Longueur = len(Countries_List)
    number = 1 


    print("Starting to fetch ...")

    for Countries in Countries_List:
        x = 0
        y = 0

        print("Fectching country %s on %s" % (number, Longueur))
        number = number + 1
        htmlSource = urllib.urlopen("http://www.cambridgeesol.org/institutions/results.php?region=%s&type=&BULATS=on" % (Countries)).read()
        s = soup(htmlSource)
        **tableauGood = s.findAll('table')
        try:
            rows = tableauGood[3].findAll('tr')
            for tr in rows:
                cols = tr.findAll('td')
                y = 0
                x = x + 1
                for td in cols:
                    hum =  td.text

                    ws.write(x,y,td.text)
                    y = y + 1
                    wb.save("%s.xls" % name_excel)**

        except (IndexError):
            pass

    print("Finished for IA")



name_doc_out = raw_input("What do you want for name for the Excel output document ? >>> ")
wb = xlwt.Workbook(encoding='utf-8')
print("Starting with BULATS Agents, then with BULATS IA")
#BULATS_AGENTS(name_doc_out)
BULATS_IA(name_doc_out)

- 所以Excel表格中有任何内容,但是当我打印var的内容时......我看到了我应该看到的内容!

我试图解决它,因为一小时但我仍然不明白发生了什么。 如果你们中的一些人可以帮助我,那应该非常好。

1 个答案:

答案 0 :(得分:0)

我试过你的申请。我非常确定td.text的输出与excel文件相同。那么你的问题是什么?如果内容不是您想要的,您应该检查BeautifulSoap的用法。 此外,您可能需要执行以下操作:

           for td in cols:
                hum =  td.text.replace(" ", " ")
                print hum
                ws.write(x,y,hum)