WeiboSpider
本项目是一个抓取微博数据的爬虫程序,抓取用户的个人信息以及用户的关注列表,程序会对用户的关注列表的关注列表进行再次抓取,数据库中已抓取的不再抓取
程序效果图
用到的第三方库:Okhttp,okio,Jsoup [运行项目前请下载并添加构建这些库]
main 包中就是两个程序的执行类 一个执行时抓用户的关注列表 另一个用来抓用户个人数据
当然你可以写在一个类中 利用线程并发执行 我只是为了测试方便
同时你也可以利用 IDE 看程序的执行和方法的调用过程 方便理解 这里我就不再一一解释说明了 程序员都会
Spider 包中是抓取信息并解析的类
datacollect 包的类是将 Spider 下的类返回的相关 list 数据插入到数据库
[我用的是 mysql, DBUtil 中改为你自己的数据库名]
首先在数据库 t_userlist 表中添加一条你自己的微博账号信息或者其他作为初始数据 程序会从该账号开始抓取数据
如http://weibo.com/u/3190836xxx/home 登录微博时 网址中 u 后面的数字就是该微博账号的 ID 数据库中添加它作为初始的数据
注意:spider 包下的 spider 类中的 cookies 的值需要修改为你自己的微博测试账号模拟登陆时返回的 cookie 值
若不清楚如何抓包获取 cookies 请自行 Google
最好注册微博小号进行模拟登陆抓数据
否则在你真正登陆微博时你的账号会提示异常 而且查看自己粉丝一类信息时会无限的跳到自己主页
在执行程序时 如果返回不到数据 有可能是微博网页的标签值有改变[出现机率不大]
你需要打开微博网页查看其源代码 修改源码中利用 jsoup 解析 html 的标签名
PS:由于微博反爬虫做的比较好 登陆时进行了三重加密. 我还不太清楚其加密机制 同时为了省去麻烦 本项目没有加密操作 下次打开电脑运行项目前先抓包再重新修改下 cookie 值就可以了
============================= 数据库表:用户表和用户信息表
用户表:
-- Table structure for t_userlist
DROP TABLE IF EXISTS t_userlist;
CREATE TABLE t_userlist (
id int(11) NOT NULL auto_increment,
userid varchar(255) default NULL,
username varchar(255) default NULL,
rootuserid varchar(255) default NULL,
rootusername varchar(255) default NULL,
mutualfollow varchar(255) default '已关注',
visited tinyint(4) default '0',
infostored tinyint(4) default '0',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=52476 DEFAULT CHARSET=utf8;
=========================================
用户信息表:
-- Table structure for t_userinfo
DROP TABLE IF EXISTS t_userinfo;
CREATE TABLE t_userinfo (
id int(11) NOT NULL auto_increment,
userid varchar(255) default NULL,
username varchar(255) default NULL,
address varchar(255) default '无' COMMENT '所在地',
gender varchar(255) default '保密' COMMENT '性别',
sexual varchar(255) default '保密' COMMENT '性取向',
Relationship varchar(255) default '保密' COMMENT '感情状况',
birthday varchar(255) default '保密',
college varchar(255) default '保密',
middlesch varchar(255) default '保密',
blog varchar(255) default '保密',
blood varchar(255) default '保密',
profile varchar(255) default '人懒什么都没写',
personaldomain varchar(255) default '无' COMMENT '个性域名',
registertime varchar(255) default '保密',
email varchar(255) default '保密',
qq varchar(255) default '保密',
tag varchar(255) default '闲人一个' COMMENT '标签',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=76 DEFAULT CHARSET=utf8;
========================================================================================
