在没有看<利用python进行数据分析>之前一直不太明白数据分析是什么事情, 就跟学了很久python以后, 还是要时常搜索下, python能用来干嘛. 学了这两个模块后, 总算对于数据分析有一个初步的概念, 进行了一次实践
注意 : 本文原则上不提供scrapy或者pandas的使用方法介绍.
环境
- python2.7
- scrapy
- pandas
- matplotlib
- windowns7
- ipython
目的
获取指定贴吧的所有主题的发帖人, 发帖时间, 回复数, 帖子链接, 之后进行以下分析:
- 每年总主题数
- 每年发主题最多的用户
- 每年回复最多的帖子
- 每年每个主题平均回复数
- 每年每个月的主题数
具体操作
数据挖掘
新建item
item我就理解成一个对象了, 但是是没有方法的对象, 或许称为一个bean更好.
import scrapy
class Tieba_hoter_item(scrapy.Item):
title = scrapy.Field()
author = scrapy.Field()
date = scrapy.Field()
times = scrapy.Field()
href = scrapy.Field()
item的建立紧扣我们的目的, 以一条帖子为一个item, 记录下它的属性.
建立爬虫
首先来分析我们信息的来源
还算简单, 不需要进帖子就可以获得回复数, 作者, 主题, 可惜没有时间(时间对我我们的分析非常重要).
进入帖子中, 发现了非常规范的时间显示, 正式我们需要的. 具体获得方式在下面代码中会有所体现, 这里不再赘述.
之后我们建立爬虫. 上一篇的时候每次都手动设定headers, 这回搜寻资料, 了解到了一个属性DEFAULT_REQUEST_HEADERS
, 这个是scrapy.Request
的默认header设置. scrapy爬虫开始的连接是一个数组, 我决定用循环将所有页面添加进去
start_urls = []
pagesize = 50
original_url = 'http://tieba.baidu.com/f?kw=clannad&ie=utf-8&pn='
for x in xrange(4500):
start_urls.append(original_url + str(x * pagesize))
result_list = []
之后是第一层解析, 要做的事情是获取标题, 链接, 回复数, 作者, 再根据链