将HTML文件解析为EXCEL

你好,
希望你们都很好。
问题:
我在目录上有几个HTML文件(发票)。
我需要的是阅读HTML内容(客户名称,bill_no,会费等),然后将它们存储在.csv文件中...
[我已附上文件iveice.txt,plz在IE中打开它]
我有一个已经存在的解析器(已连接的Parser.sh),可以正常工作。
请帮助我将现有的Shell Parser转换为Python Parser。
Shell Parser代码如下:

选择 | 换行 | 行号
  1. #!/bin/bash
  2.  
  3. echo "Script started \n"; 
  4. echo "\"BILL_NUMBER\",\"ACCOUNT_NUMBER\",\"USERNAME\",\"CUSTOMER_NAME\",\"CONTACT_NO\",\"EMAIL\",
  5. \"PACKAGE_PLAN\",\"TOTAL_AMOUNT_DUE_TOP\",\"PAYMENT_DUE_DATE\",\"TOTAL_AMOUNT_AFTER_DUE_DATE\",\"BILLING_PERIOD\",
  6. \"PERVIOUS_BALANCE\",\"PAYMENTS\",\"NET_PREVIOUS_BALANCE\",\"SUBORDINATE_AC_CHARGES\",\"INITIAL_CHARGES\",
  7. \"MONTHLY_LINE_RENT\",\"ANTIVIRUS_LINE_RENT\",\"PARENTAL_LINE_RENT\",\"EXTRA_USAGE\",\"Extra Usage-2GB_COUNT\",
  8. \"Extra Usage-2GB_AMOUNT\",\"Extra Usage-5GB_COUNT\",\"Extra Usage-5GB_AMOUNT\",\"SPEED_BOOST_COUNT\",
  9. \"SPEED_BOOST_AMOUNT\",\"HAPPY_DAYS_1_COUNT\",\"HAPPY_DAYS_1_AMOUNT\",\"HAPPY_DAYS_3_COUNT\",
  10. \"HAPPY_DAYS_3_AMOUNT\",\"StaticIP_COUNT\",\"StaticIP_AMOUNT\",\"PayAsYouGo_05Day_COUNT\",\"PayAsYouGo_05Day_AMOUNT\",
  11. \"PayAsYouGo_10Day_COUNT\",\"PayAsYouGo_10Day_AMOUNT\",\"PayAsYouGo_30Day_COUNT\",\"PayAsYouGo_30Day_AMOUNT\",
  12. \"PayAsYouGo_03Day_COUNT\",\"PayAsYouGo_03Day_AMOUNT\",\"PayAsYouGo_07Day_COUNT\",\"PayAsYouGo_07Day_AMOUNT\",
  13. \"PayAsYouGo_15Day_COUNT\",\"PayAsYouGo_15Day_AMOUNT\",\"Power Hours-30Days_COUNT\",\"Power Hours-30Day_AMOUNT\",
  14. \"DISCOUNTS\",\"ADJUSTMENTS\",\"DEVICE_CHANGE_CHARGES\",\"PLAN_CHANGE_CHARGES\",\"DEVICE_DAMAGE_CHARGES\",
  15. \"DEVICE_LOST_CHARGES\",\"ACCOUNT_FREEZE_CHARGES\",\"LATE_PAYMENT_CHARGES\",\"SUBTOTAL\",\"FEDERAL_EXCISE_DUTY\",
  16. \"ADVANCE_WITHHOLDING_TAX\",\"CURRENT_CHARGES\",\"ToTAL_DUE\"" > parsed.csv
  17.  
  18. for file in *.html; do
  19.  cat $file | grep '<!--B' |  awk 'BEGIN{ RS = ""; FS = "|"}  { for( i=1;i<=NF;i+=1)    { split($i,a,"##"); printf "\"" a[2] "\","}  printf "\n"  }'  
  20.   >> parsed.csv
  21. done
  22.  echo "Script finished";

如果有人可以以python格式分享。

附加的文件

File Type: txt

Invoice.txt

(333.5 kb,3862次观点)

# 回答1


你好
您可以使用三个模块来帮助您。
Glob-帮助您浏览文件
RE-要提取您的数据的正则表达式
CSV-编写CSV文件
以下是一个基本结构,可以使您入门

选择 | 换行 | 行号
  1. import glob
  2. import re
  3. import csv
  4.  
  5. headings=[*list of your headings*]
  6. output=csv.writer(open("parser.csv","w"))
  7. output.writerow(headings)
  8.  
  9. for file in glob.glob("*.html"):
  10.     inputFile=open(file[-1])
  11.     data=[]
  12.     for heading in headings:
  13.         *code to extract data for heading
  14.         data.append(extracted data)
  15.     output.writerow(data)
  16.     inputFile.close()
  17.  

提取数据的代码显然特定于您的文件。我还没有经历过什么是最好的方法,但是通常使用正则表达式会使您整理出来。
祝你好运!

# 回答2


为了添加Glenton的信息,Python模块BeautifulSoup是解析HTML文件的理想选择。从未使用过它,我想我会试一试。
这是发生的事情:

在整体中读取文件并创建一个美丽的对象

查找您要解析的文字

在文本中替换为" = \ n"

通过在" |"上拆分文本来创建字符串列表。

创建用于编写CSV数据的文件对象

创建一个csv.writer对象

在字符串列表中迭代,将每个字符串分开在" ##"上,然后写每行

关闭文件对象

现在为代码:

选择 | 换行 | 行号
  1. import re
  2. from BeautifulSoup import BeautifulSoup
  3.  
  4. fnIn = "invoice.htm"
  5. fnOut = "invoice.csv"
  6.  
  7. soup = BeautifulSoup(open(fnIn).read())
  8. comments = soup.find(text=re.compile("BILL_NUMBER")).replace("=\n", "").split("|")
  9.  
  10. f = open(fnOut, 'w')
  11. writer = csv.writer(f)
  12. for s in comments:
  13.     writer.writerow(s.split("##"))
  14. f.close()

看起来很简单,不是吗?
CSV模块自动说明文本中的嵌入式逗号。

# 回答3


哇!那很方便。我有一个旧脚本,我用来下载共享数据 - 希望我会知道Beautifulsoup!
# 回答4


感谢Glenton&Bvdet,
@BVDET:我在执行提供的代码时遇到错误" Infror:no Module nos name name nature suptifulesoup"。
是否缺少任何插件/实用程序。
请指导。
# 回答5

美丽的人

不是内置的python。您必须下载并安装它。

# 回答6


亲爱的,俩,
感谢您的帮助,现在它给作家带来了错误,不确定。
无论如何,我已经简化了我的要求,请向我提供Python代码……
我有一个html文件(例如myfile.html),只有3行,如下所示
你好
再见
我想将此文件(myfile.html)写入CSV文件(例如mycsv.csv)。
1)程序仅读取第2行,从""开始
2)在" ##"和" |"之间提取所有字符串,然后将其存储到CSV文件中,如下
亚当·约翰(Adam John)0987654321男性
abbassalam@yahoo.com
# 回答7


Amad Khan,
我们不是在这里为您编写您的代码。您应该能够从我们的示例中写下自己的书 假如。 您可以将尝试的代码以及收到的错误(包括Trackback)发布,我们将很乐意协助纠正您的问题。 bvdet 主持人

标签: python

添加新评论