0%

从零开始爬草榴成人文学 (2) – 分析

前文介绍了Scrapy爬取CL的成人文学区文章列表,本文介绍如何进行一些简单的数据分析。本文为分析过程中记录的交互式笔记。

说明

本文对X榴成人文学区抓取文章标题2000条信息进行分析.抓取的数据格式为:

  • lit_type
  • lit_title
  • lit_url
  • lit_writer
  • lit_submit
  • lit_comments
  • lit_last_comments

存储在MongoDB实验云存储上。 使用pymongo前安装

pip install pymongo dnspython

先导入必要的库,并对画图做一些基本的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pymongo
from pandas.io.json import json_normalize

plt.style.use('ggplot')
plt.rc('figure', figsize=(15, 15)) #把plt默认的图片size调大一点
plt.rcParams['font.sans-serif'} = ['SimSun'}
plt.rcParams['font.serif'} = ['SimSun'}
plt.rcParams['axes.unicode_minus'} = False
plt.rcParams["figure.dpi"} = False # 解决保存图像是负号'-'显示为方块的问题
%matplotlib inline

数据读取

从数据库中读取所有的文章数据,并格式化到Pandas的DataFrame里

1
2
3
4
5
6
client = pymongo.MongoClient("mongodb+srv://用户名:密码@xxxx.mongodb.net/test?retryWrites=true&w=majority")
db = client['t66y'}
sheets = db['main'}
data = sheets.find()
items = pd.DataFrame(list(data))
client.close()

对数据做一些筛选处理,前20个数据应该是网站的公告,丢掉了事。另外将一些文本格式的日期形式做一下转换,转换为datetime格式,将评论数量转换为数字格式。

1
2
3
4
items.drop([i for i in range(0,21)},inplace=True)
items['lit_submit'} = pd.to_datetime(items['lit_submit'})
items['lit_comments'} = pd.to_numeric(items['lit_comments'})
items['lit_title'} = items['lit_title'}.str.strip()

数据分析

做完以上数据转化后我们简单做一些分析,首先看一下哪个作者是最高产的?原理是“东京热”网友

1
items['lit_writer'}.value_counts().head(20).plot(kind='bar')

哪个时间段发布和评论小黄文最集中?

1
2
items['lit_submit'}.value_counts().plot(kind='line',subplots=False)
items['lit_last_comments'}.value_counts().plot(kind='line',subplots=False)

评论看最热文章?可以看出连载文章是评率最多的,也许是因为作者用

1
2
items_title_idxed = items.set_index('lit_title').sort_values(by='lit_comments',ascending=False).head(10)
items_title_idxed['lit_comments'}.plot(kind='bar')

以上就是一些简单的分析。这些数据还可以做哪些分析?或许可以用自然语言处理的一些工具做如下处理

  • 哪类文章最受欢迎?
  • 哪类文章创作率最高?
  • 能不能自己创作小黄文?

待续……