JAVA爬虫(一):豆瓣电影排行榜爬取

  • 前言
  • 流程图
  • 步骤
    • 一、爬取豆瓣电影榜单网页源代码
    • 二、网页源码解析
    • 三、爬取单个电影网页源码
    • 四、源代码解析及关键信息获取

前言

最近和大创队友一起给大创做的APP增添了新功能,新功能中需要用到爬取豆瓣、QQ音乐、哔哩哔哩等网站。所以写下博客记录这一过程,也算是和大家分享一些经验。

流程图

步骤

一、爬取豆瓣电影榜单网页源代码

为实现这一功能,第一步是需要获取豆瓣热门电影榜单的网页源代码,我们采用Jsoup库中的connect方法建立连接,再用userAgent方法模拟浏览器进行网页访问,再用post方法获取数据。得到的是HTML格式的网页源代码,如下图:

二、网页源码解析

HTML格式解析:
我们发现电影信息存储在上图所示的地方,那我们只需要对这一层进行解析获取数据即可。用Jsoup中的select方法定位至这一区域,再用attr方法逐层选择需要的信息,比如我们获取了”href”下的电影链接、”title”下的电影名字,”src”下的电影图片等等。
总体代码如下

import java.io.IOException;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;public class getDB_film {public static void main(String[] args) throws IOException {String url = "http://movie.douban.com/chart";//获取htmlDocument doc = Jsoup.connect(url).maxBodySize(Integer.MAX_VALUE).data("query", "Java").cookie("auth", "token").userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134").timeout(10000)                             .post();//System.out.println(doc);//逐层分析htmlElements a = doc.select("div[class=\"\"]");//System.out.println(a);Elements b= a.select("a[class=nbg]");//String c = b.attr("href");//System.out.println(b);//System.out.println(c);for(Element element : b){String video_url = element.attr("href");  // 电影链接地址String video_name = element.attr("title");  // 电影名字Elements d= element.select("img");String img_url = d.attr("src");             //电影图片System.out.println("video_name"+video_name);System.out.println("img_url"+img_url);       System.out.println("video_url"+video_url);}}}

运行结果如下:

三、爬取单个电影网页源码

在获取电影榜单之后,我们可以得到每个电影对应的url,就可以进入对应电影的网页获取源代码。之后再进行源代码爬取、HTML解析,过程与上文爬取电影榜单类似,不再赘述。下图为《海王》的电影信息。

四、源代码解析及关键信息获取

最后我们可以得到电影详细信息,由于我们功能需要,我们只爬取了电影导演、电影主演、剧情简介、电影图片等信息。大家可以根据网页返回信息自行添加需要获取的信息。
单个电影信息获取总体代码如下

import java.io.IOException;import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;import com.google.common.base.CharMatcher;public class getFilm_information {public static void main(String[] args) throws IOException {String url = "https://movie.douban.com/subject/27119586/";//获取htmlDocument doc = Jsoup.connect(url).maxBodySize(Integer.MAX_VALUE).data("query", "Java").cookie("auth", "token").userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134").timeout(10000)                             .post();// System.out.println(doc);Elements a = doc.select("script[type=\"application/ld+json\"]");String film_Json = a.toString();String film_json = film_Json.substring(film_Json.indexOf(">")+1,film_Json.lastIndexOf("<"));//System.out.println(film_json);try {JSONObject film_info = new JSONObject(film_json);//电影导演JSONArray director_data=film_info.getJSONArray("director");for(int j=0;j<director_data.length();j++) {                    String director_name = director_data.getJSONObject(j).getString("name");System.out.println("director_name:  " + director_name);}  //电影主演JSONArray actor_data=film_info.getJSONArray("actor");for(int j=0;j<actor_data.length();j++) {                    String actor_name = actor_data.getJSONObject(j).getString("name");System.out.println("actor_name:  " + actor_name);}  //剧情简介Elements b = doc.select("span[property=\"v:summary\"]");String film_summary =CharMatcher.whitespace().trimFrom(b.text());System.out.println("film_summary:  "+film_summary);} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

运行结果如下:

说明
参数输入“url”是上文“二、网页源码解析” 中获取的对应每一部电影的url。

JAVA爬虫(一):豆瓣电影排行榜爬取相关推荐

  1. python3豆瓣电影排行榜爬取

    项目目标: 爬取豆瓣电影排行榜top250 项目分析: 打开豆瓣电影排行榜网址(以下分别是前三页的网址),由此我们判断只需更改"start=**"的数值既可遍历整个排行榜. htt ...

  2. easyui datalist 不显示数据_爬虫练习——豆瓣电影信息爬取及数据可视化

    最近自学了简单的爬虫项目,简单记录下自己的小白学习路径. 本次爬取的是豆瓣电影TOP250数据,主要用到beautifulsoup.re.urllib库.SQLite包,数据可视化方面主要用到flas ...

  3. 爬虫实战——豆瓣电影短评爬取

    目录 一.任务概述 心路历程 方案制定 二.正式开工 准备工作 处理 json 数据获取电影 id 处理短评 html 源码 三.全部代码 用Access后续处理 一.任务概述 爬取豆瓣电影中2020 ...

  4. 豆瓣电影影评爬取---最受欢迎的影评[xpath语法]

    豆瓣电影影评爬取---最受欢迎的影评[xpath语法] 1.基础环境配置: requests-->版本:2.12.4 lxml-->版本:3.7.2 2.爬取网址:https://movi ...

  5. Colly实现豆瓣电影Top250爬取

    使用 Colly 实现 豆瓣电影Top250爬取 package mainimport ("encoding/csv""github.com/PuerkitoBio/go ...

  6. Java爬虫历险记 -- (1)爬取百度首页的logo

    Java爬虫历险记 – (1)爬取百度首页的logo 在这篇文章里,介绍两种方式来获取百度网页的logo: (1)Httpclient (2) jsoup + Httpclient ,详细的运行结果可 ...

  7. python爬取豆瓣电影top250并保存为xlsx_python 爬虫获取豆瓣电影排行榜前250并写入excel...

    豆瓣电影排行榜前250 分为10页,第一页的url为https://movie.douban.com/top250,但实际上应该是https://movie.douban.com/top250?sta ...

  8. scrapy框架下的豆瓣电影评论爬取以及登录,以及生成词云和柱状图

    由于豆瓣在今年5月份已经禁止展示所有短评,只展示最热的500条数据,并且在爬取到240条的时候,如果没有登录的话,会提示登录. 因此几天的爬虫,包括豆瓣的自动登录和数据爬取后批量存入pymysql数据 ...

  9. python爬虫实现豆瓣数据的爬取

    本文利用urllib在python3.7的环境下实现豆瓣页面的爬取! 用到的包有urllib与re两个模块,具体实现如下! import urllib.request import re import ...

最新文章

  1. 清华团队曝光「新冠病毒」3D高清结构照!这个恶魔已感染1亿地球人
  2. 通过python实现超市购物系统(通过列表简单实现版)
  3. sql server教程sql存储过程和算法
  4. JZOJ__Day 3:【NOIP普及模拟】排序(sort)
  5. html 设置 下拉列表 不可用
  6. SegmentFault 巨献 1024 程序猿游戏「红岸的呼唤」第一天任务攻略
  7. 工具分享 --- 分享一个在线制作ico的网站
  8. 【c】写头文件要加#ifndef,#define, #endif
  9. springboot跨域解决方案
  10. 比赛总结——atcoder beginner contest 109
  11. bzoj 1019: [SHOI2008]汉诺塔(打表)
  12. uniapp 按钮固定在底部
  13. Ubuntu安装 Killer Wireless-AC 1550 Wireless 无线网卡驱动
  14. ros重置后地址_RouterOS中BGP软重新配置 - ROS软路由论坛 - ROS教程 - RouterOS - ROS之家 - ROS脚本生成器 - Powered by Discuz!...
  15. 抓包工具QPA使用教程
  16. 【推荐】中国计算机学会推荐国际学术会议和期刊目录——CCF的会议与期刊分级
  17. Ubuntu18.04运行QQ音乐
  18. ZJYYC LSH去年买了个表(也是LZY去年买了个表) DFS
  19. 如何成为一个很厉害的人(时间之尺)
  20. “易+”开源 | 简单可信赖,GameSentry 正式开源

热门文章

  1. 在月球上你会看到这些神奇景象:不可思议
  2. Hexo博客发表文章、草稿、添加分类和标签
  3. 手机新手上路_术语_各种解释
  4. popupwindow 不抢夺焦点_不知道家里颜色怎么配?一起去翻画册吧!
  5. mysql php dll_php_pdo_mysql.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  6. 盘点史上最危险的10种创业合伙人
  7. Neural network state estimation for full quantum state tomography笔记
  8. 计算机二级证书有用吗
  9. sklearn 数据加载工具(1)
  10. 获取安卓应用包名和入口 Activity