前言
在上一章中,我们提取的南京二手房信息,并将其保存在MongoDB中,此篇,我们提取MongoDB中的数据以便进行数据处理的操作。
MongoDB&Python
MongoDB的操作比较简单,可以参照Python连接MongoDB操作,此处不再赘述,具体见代码:
from pymongo import MongoClient
import pandas as pd
# 运行 mongod 实例创建一个MongoClient
# client = MongoClient() # 连接默认主机和端口
client = MongoClient('localhost', 27017) # 明确指定主机和端口
# client = MongoClient('mongodb://localhost:27017/') # 使用MongoDB URI格式
# db = client.lianjiaone # 使用MongoClient实例上的属性的方式来访问数据库
db = client['lianjia'] # 如果数据库名称使用属性方式访问无法正常工作(如:lianjiaone),则可以使用字典样式访问
# collection = db.BOOK # 集合是存储在MongoDB中的一组文档,可以类似于关系数据库中的表。 在PyMongo中获取集合的工作方式与获取数据库相同
collection = db['nanjing'] # 使用字典方式访问
print("posts count is = ", collection.count()) # 得到一个集合中的所有文档的计数
# print(collection.find_one()) # 查询一条数据,使用find_one()
num=1
data={}
for collin in collection.find(): # 查询所有数据,使用find()
for key, value in collin['base_info'].items():
collin[key] = value
del collin['base_info'] # 因为提取的信息中base_info和CommunityInfo是字典类型,包含很多值,因此单独提取出来
try:
for key, value in collin['CommunityInfo'].items():
collin[key] = value
del collin['CommunityInfo']
except Exception:
pass
data[num]=collin
num=num+1
# 保存数据
df = pd.DataFrame(data).T
df.to_csv('nanjing.csv',encoding='utf-8_sig') # 通过encoding解决保存中文乱码问题
print('总二手房信息条目:%d'% len(data))
数据已保存在当前目录内
另,如果有任何问题,欢迎邮件交流:myprojtest@163.com。
爬虫系列文章:
南京链家爬虫系列文章(一)——工具篇
南京链家爬虫系列文章(二)——scrapy篇
南京链家爬虫系列文章(三)——MongoDB数据读取
南京链家爬虫系列文章(四)——图表篇