我已经从某个网站使用BeautifulSoup抓取了表格数据。 (This is the link for reference)。这是有关单个公司的数据。
它是按照多个列表的形式抓取并获得的:
['Type', 'Audited', 'Audited', 'Audited', 'Audited']
['Period Ending', '31-Mar-18', '31-Mar-17', '31-Mar-16', '31-Mar-15']
['No, of Months', '12', '12', '12', '12']
#-----------------------------------------------------------------------#
['Net Sales', '466,34', '1,479,10', '5,551,24', '10,724,32']
['Other Income', '26,68', '185,81', '132,56', '121,20']
['Interest', '0,00', '0,00', '-286,76', '-361,95']
['Profit before Tax', '-2,482,68', '-1,513,02', '-805,38', '213,97']
['Tax', '75,04', '-0,95', '-9,07', '-73,37']
我对Mongo还是很陌生,我知道数据是如何以文档样式格式存储的。但是我对如何解决这个问题感到困惑。
现在我正在考虑,为每个公司在db中生成一个集合,并按如下方式存储每列的数据:
companydata.insert({'Type':'Audited', 'Period Ending': '31-Mar-18', 'Net
Sales':'466,34'})
companydata.insert({'Type':'Audited', 'Period Ending': '31-Mar-17', 'Net
Sales':'1,479,10'})
但这几乎不是解决方案,更不用说是一个优雅的解决方案了。必须有更好的方法。
答案 0 :(得分:1)
对于您提供的数据,我假设列表可以作为列表使用。 您可以使用以下代码:
import pandas as pd
from pymongo import MongoClient
scraped_data = [['Type', 'Audited', 'Audited', 'Audited', 'Audited'],
['Period Ending', '31-Mar-18', '31-Mar-17', '31-Mar-16', '31-Mar-15'],
['No, of Months', '12', '12', '12', '12'],
['Net Sales', '466,34', '1,479,10', '5,551,24', '10,724,32'],
['Other Income', '26,68', '185,81', '132,56', '121,20'],
['Interest', '0,00', '0,00', '-286,76', '-361,95'],
['Profit before Tax', '-2,482,68', '-1,513,02', '-805,38', '213,97'],
['Tax', '75,04', '-0,95', '-9,07', '-73,37']]
conn = MongoClient(host="url/of/mongodb", port=27017)
db = conn["db_name"]
coll = db['collection_name']
columns = [elem[0] for elem in data]
frame_data = [elem[1:] for elem in data]
source = pd.DataFrame(data=frame_data)
transposed = source.T
mapper_dict={}
for i,elem in enumerate(columns):
mapper_dict.update({i:elem})
final_result = transposed.rename(mapper=mapper_dict,axis=1).to_dict(orient="records")
coll.insert_many(final_result)
这将根据您的要求存储数据