您的位置:首页 > 编程语言 > Java开发

Java豆瓣电影爬虫——抓取电影详情和电影短评数据

2017-09-07 14:47 441 查看
动机

采集豆瓣电影数据包括电影详情页数据和电影的短评数据。

电影详情页如下图所示



需要保存这些详情字段天津关键词优化如导演、编剧、演员等还有图中右下方的标签。

短评页面如下图所示



需要保存的字段有短评所属的电影名称,每条评论的详细信息如评论人名称、评论内容等。

数据库设计

有了如上的需求,需要设计表,其实很简单,只需要一张电影详情表movie和一张电影短评表comments,另外还需要一张存储网页提取的超链接的记录表record。

movie表



movieId:主键,自增长
Name:电影名
Director:导演
Scenarist:编剧
Actors:主演
Type:类型
Country:制片国家/地区
Language:语言
releaseData: 上映日期
Runtime: 片长
ratingNum:豆瓣评分
Tags:标签

  comments表



commentId:主键,自增长
commentInfo:评论内容
commentAuthor:评论者
commentAuthorImgUrl:评论者头像链接
commentVote:评论点赞数
commentForMovie:评论的电影名
recordId:链接record表,暂时未用到

  record表



recordId:主键,自增长
URL:爬取解析的超链接
Crawled:是否被爬过

注意:数据库设计是在不断调整的,比如之前设计了一张tags表,用于存储每部电影的标签,经过调整发现直接放到movie中作为一个字段更加方便,又比如comments表中,commentForMovie是后来加上的,方便查找当前的评论针对哪部电影。

使用的技术

语言:Java(语言是一门工具,网上用python,java,nodejs比较多)

数据库:Mysql(轻便易用)

解析页面:Jsoup(比较熟悉httpparser,虽然功能强大,但是稍显繁琐,这里用Jsoup,因为其为类javascript语法)、正则表达式(对于一些结构比较奇怪的dom结构,采用了正则表达式的方式来提取信息,其实也可以用xpath,但是xpath极易受dom结构变化而失效)

比如对于网页源码如下

可以通过如下代码来解析相应字段(其中有用Jsoup和正则表达式的)

对于服务端返回不同状态的http status,本程序对于如304,401,403,404等都采取了丢弃处理,不作解析。

效果展示



  record表记录



  movie表记录



  comments表记录



以上只是一个爬取数据的后台实现雏形,还有很多细节的问题需要解决。后期可能会补上环境搭建以及遇到的问题和解决方法相关的文章。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: