我正在通过API从一个问答网站爬网数据,我想自动存储数据。 通常,工作流程会获取一个主题ID并获取该主题的所有QA ID。然后我想将每个QA存储为mongoDB集合。 为了测试我的设计,我写了这个:
def df2bson(df):#transfer the dataframe to bson format
data = json.loads(df.T.to_json()).values()
return data
def df2mongo(self,topic_id):#store in the MongoDB
bson_data = df2bson(df)
client = MongoClient()
mydb = client["zhihu_wenchuan"]
collection = mydb.topic_id
return collection
def get_topics(topic_id):#the function to get the demo topic
num = 1
row = []
for que in topic.unanswered_questions:
if num< topic.questions_count:
a = get_questions(que)
row.append(a)
num+=1
if num%10==0:
flushPrint(num/10)
# time.sleep(random.randint(0,1))
df = pd.DataFrame(row)
data = df2bson(df)
col = df2mongo(data,topic_id) #maybe here is the problem,but I don't know how to fix it
return col
我可以成功获取主题数据并将其存储为df,并且可以通过逐行编码(手动更改集合名称)将它们成功存储到MongoDB中,但是我无法通过上述代码将数据存储到mongodb中(将ID自动写为集合名称。
问题是,当我想获得数千个QA时,我无法写出它们的每个集合名称,我需要使用循环和函数来完成它吗? 如何调整密码?请~~