我在本地保存了大量此页面,我正在努力提取内容并输入CSV格式。我有两个问题,整整两天我尝试了很多解决方案,很难在这里列出。
这是在线托管的网页,供参考:source page 和代码:
import csv
from bs4 import BeautifulSoup
soup = BeautifulSoup(open("/my/path/to/local/files/filename.html"), "lxml")
table = soup.find('table', attrs={ "class" : "report_column"})
headers = [header.text for header in table.find_all('th')]
rows = []
for row in table.find_all('tr'):
rows.append([val.text.encode('utf8') for val in row.find_all('td')])
url = []
with open('output_file.csv', 'a') as csv_file:
writer = csv.writer(csv_file)
writer.writerow(["","License Num","Status","Type/ Dup.","Expir. Date","Primary Owner and Premises Addr.","Mailing Address","Action","Conditions","Escrow","District Code","Geo Code"])
writer.writerows(row for row in rows if row)
第一个问题是我需要将csv的每一行与页面顶部显示的日期相关联,但也可以在所有cols标题的href中使用。我如何提取该href并加入或以某种方式在csv中添加一个独立的列?
第二个问题是,当获得具有多个换行符的cols(如Primary Owner和Mailing Address cols)时,我得到的单元格内容是一个长字符串。你能给我一些关于如何用管道描绘换行符的提示,或者理想地把它们放在独特的cols中,例如Owner1,Owner2,Owner3,Owner4,单元格中每行(最多4行)一行。
感谢您的帮助!
期望的输出:
现在我在主要所有者col中得到这个:
DBA:MECCA DELICATESSEN RAWLINGS,LINDA MAE 215预订RDMARINA,CA 93933
理想情况下,我可以获得四个cols,每行一个(由" BR"在表格中描绘):
col0 2017年7月12日(页面标题日期)
col6 DBA:MECCA DELICATESSEN RAWLINGS
col7 LINDA MAE
col8 215预订RD
col9 MARINA,CA 93933