声明:本次实例不涉及隐私信息,爬取数据全为笔者所能获取的公开信息
python 和 r语言这对黄金搭档,在数据获取,分析和可视化展示方面,各具特色,相互配合,当之无愧成为数据分析领域的两把利剑。该项目分为两个模块:1,数据准备阶段 采用python网络爬虫,实现所需数据的抓取,2,数据处理和数据可视化,采用r语言作为分析工具并作可视化展示。
第一,数据准备模块
数据来源选用笔者所在学校的内网(校内俗称OB),采用保存cookie模拟登录,以板块为单位,进行论坛帖子的抓取,并且根据发贴人的连接,再深入到发贴人的主页进行发贴人个人公开信息的抓取,最后以每一条帖子作为一条记录保存到文件,按照此逻辑笔者于2016年5月13日-2016年5月26日设置ubuntu下定时任务,按时抓取并保存获得数据,关于linux下如何设置定时任务,请参考设置linux下的定时任务。
以下进行详细分析:
首先需要载入的库:
#coding:utf-8
import urllib
import urllib2
import cookielib
import re
from bs4 import BeautifulSoup
import block_list
import time,sys,datetime,random
进行模拟登录并保存cookie
需要有登录界面和论坛首页的url和保存cookie和错误日志文件
post_url = 'http://ourob.cn/bbs/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1'
url = 'http://ourob.cn/bbs/forum.php'
err_str = '' #保存error详情
filename = 'cookie_ob.txt'
模拟登录和生成cookie文件
cookie = cookielib.MozillaCookieJar(filename)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
#post请求参数
postdata = urllib.urlencode({
'fastloginfield':'username',
'handlekey':'ls',
'username':'my user name',
'password':'my password',
'quickforward':'yes',
'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0',
'Connection':'keep-alive'
})
login_url = post_url
opener.open(login_url,postdata)
cookie.save(ignore_discard=True,ignore_expires=True)
尝试用cookie模拟登录论坛首页,并下载源码,提取所需字段信息
login_url = post_url
opener.open(login_url,postdata)
cookie.save(ignore_discard=True,ignore_expires=True)
try:
result = opener.