爬虫:读取数据库数据并处理数据

Posted tree1000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫:读取数据库数据并处理数据相关的知识,希望对你有一定的参考价值。

  测试代码要利用到上一篇文章爬取到的数据,上一章链接:爬虫:多进程爬虫 

    本文要分析上一篇文章爬取到的数据库中的数据,结果分别是与男性/女性话题相关联的话题。

1. 遍历mongodb数据语法

1.1 测试代码

from pymongo import MongoClient

client = MongoClient(\'localhost\')
db = client[\'zhihu_mirror_links\']

collection = db[\'女性keyword\']
results = collection.find({\'key_words\': {\'$regex\': \'.*\'}})
print(results)
for i in results[:10]:
    print(i[\'key_words\'])

 

1.2  测试结果

 2. 数据分析

  下面的截图结果是运行两次代码的结果,每次运行要修改一下所要处理数据库的collection,其余不需要改动

2.1 测试代码

import matplotlib.pyplot as plt
from pylab import mpl
from collections import Counter
from pymongo import MongoClient
import time
import os

client = MongoClient(\'localhost\')
db = client[\'zhihu_mirror_links\']
collection = db[\'男性keyword\']
mpl.rcParams[\'font.sans-serif\'] = [\'SimHei\']  # 指定默认字体
mpl.rcParams[\'font.size\'] = 8                 # 设置标签字体大小
mpl.rcParams[\'axes.unicode_minus\'] = False  # 解决保存图像是负号\'-\'显示为方块的问题


def data_view():
    # 首先读取数据库数据,并进行关键字计数:Counter对象
    topic = input(\'输入要分析的话题:\')   # 保存文件名用到
    keywords = []
    db_results = collection.find({\'key_words\': {\'$regex\': \'.*\'}})  # 读取数mongodb据库数据
    for result in db_results:                                        # 将数据添加到keywords列表
        for word in result[\'key_words\'].split(\',\'):
            keywords.append(word)
    print(Counter(keywords).most_common())
    print(Counter(keywords).most_common()[:30])                       # 列表计数测试
    keywords_count = Counter(keywords).most_common()[1:31]           # 取数量排名前21,去除第一个

    # 遍历文件夹,保证文件夹中没有要保存图片名的图片
    index = 1
    while topic + str(index) + \'.png\' in os.listdir(r\'镜像话题数据分析\'):
        index += 1

    # 提取要绘图的纵横坐标数据:x,y
    x = []
    y = []
    for data in keywords_count:                                      # 迭代计数列表
        x.append(data[0])
        y.append(data[1])
    x.reverse()                                       # matplotlib画横向柱状图是从下往上画,反转一下数据
    y.reverse()

    # 画横向柱状图
    fig, ax = plt.subplots()
    png = ax.barh(range(len(x)), y, color=\'#ff20ff\')
    # 添加数据标签
    for rectangle in png:
        width = rectangle.get_width()
        ax.text(width, rectangle.get_y() + rectangle.get_height() / 2, \'%d\' % int(width), ha=\'left\', va=\'center\')
    # 设置Y轴刻度线标签
    ax.set_yticks(range(len(x)))
    ax.set_yticklabels(x)

    plt.xlabel(\'value\')
    plt.ylabel(\'keyword\')
    plt.title(topic + \'话题\' + \'\\n\' + time.ctime() + \'\\n\' + str(Counter(keywords).most_common()[0]))  # 排名第一的将在图表标题显示
    plt.savefig(r\'镜像话题数据分析\' + \'/\' + topic + str(index) + \'.png\', dpi=600, bbox_inches=\'tight\')  # 清晰度
    plt.show()  # 要放在savefig后面


if __name__ == \'__main__\':
    data_view()

2.2 结果截图

     

 

 

3.  结论

  对于生活话题,男性不及女性。

  对于化妆、美容、生育话题,男性不及女性。

  对于情感、心理、婚姻、家庭、性等话题,男性和女性都同样关注。

 

以上是关于爬虫:读取数据库数据并处理数据的主要内容,如果未能解决你的问题,请参考以下文章

从 DOM 中读取 HTML 片段并向其中添加自定义数据

Python爬虫新手进阶版:怎样读取非结构化图像视频语音数据

python实现简单图片爬虫并保存

大数据时代,爬虫技术相关法律问题介绍

我的Go+语言初体验——用Go+写个爬虫并进行数据处理

R软件如何将爬虫得到的数据制成表格