JAVA爬虫(一):豆瓣电影排行榜爬取
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爬虫(一):豆瓣电影排行榜爬取相关推荐
- python3豆瓣电影排行榜爬取
项目目标: 爬取豆瓣电影排行榜top250 项目分析: 打开豆瓣电影排行榜网址(以下分别是前三页的网址),由此我们判断只需更改"start=**"的数值既可遍历整个排行榜. htt ...
- easyui datalist 不显示数据_爬虫练习——豆瓣电影信息爬取及数据可视化
最近自学了简单的爬虫项目,简单记录下自己的小白学习路径. 本次爬取的是豆瓣电影TOP250数据,主要用到beautifulsoup.re.urllib库.SQLite包,数据可视化方面主要用到flas ...
- 爬虫实战——豆瓣电影短评爬取
目录 一.任务概述 心路历程 方案制定 二.正式开工 准备工作 处理 json 数据获取电影 id 处理短评 html 源码 三.全部代码 用Access后续处理 一.任务概述 爬取豆瓣电影中2020 ...
- 豆瓣电影影评爬取---最受欢迎的影评[xpath语法]
豆瓣电影影评爬取---最受欢迎的影评[xpath语法] 1.基础环境配置: requests-->版本:2.12.4 lxml-->版本:3.7.2 2.爬取网址:https://movi ...
- Colly实现豆瓣电影Top250爬取
使用 Colly 实现 豆瓣电影Top250爬取 package mainimport ("encoding/csv""github.com/PuerkitoBio/go ...
- Java爬虫历险记 -- (1)爬取百度首页的logo
Java爬虫历险记 – (1)爬取百度首页的logo 在这篇文章里,介绍两种方式来获取百度网页的logo: (1)Httpclient (2) jsoup + Httpclient ,详细的运行结果可 ...
- python爬取豆瓣电影top250并保存为xlsx_python 爬虫获取豆瓣电影排行榜前250并写入excel...
豆瓣电影排行榜前250 分为10页,第一页的url为https://movie.douban.com/top250,但实际上应该是https://movie.douban.com/top250?sta ...
- scrapy框架下的豆瓣电影评论爬取以及登录,以及生成词云和柱状图
由于豆瓣在今年5月份已经禁止展示所有短评,只展示最热的500条数据,并且在爬取到240条的时候,如果没有登录的话,会提示登录. 因此几天的爬虫,包括豆瓣的自动登录和数据爬取后批量存入pymysql数据 ...
- python爬虫实现豆瓣数据的爬取
本文利用urllib在python3.7的环境下实现豆瓣页面的爬取! 用到的包有urllib与re两个模块,具体实现如下! import urllib.request import re import ...
最新文章
- 清华团队曝光「新冠病毒」3D高清结构照!这个恶魔已感染1亿地球人
- 通过python实现超市购物系统(通过列表简单实现版)
- sql server教程sql存储过程和算法
- JZOJ__Day 3:【NOIP普及模拟】排序(sort)
- html 设置 下拉列表 不可用
- SegmentFault 巨献 1024 程序猿游戏「红岸的呼唤」第一天任务攻略
- 工具分享 --- 分享一个在线制作ico的网站
- 【c】写头文件要加#ifndef,#define, #endif
- springboot跨域解决方案
- 比赛总结——atcoder beginner contest 109
- bzoj 1019: [SHOI2008]汉诺塔(打表)
- uniapp 按钮固定在底部
- Ubuntu安装 Killer Wireless-AC 1550 Wireless 无线网卡驱动
- ros重置后地址_RouterOS中BGP软重新配置 - ROS软路由论坛 - ROS教程 - RouterOS - ROS之家 - ROS脚本生成器 - Powered by Discuz!...
- 抓包工具QPA使用教程
- 【推荐】中国计算机学会推荐国际学术会议和期刊目录——CCF的会议与期刊分级
- Ubuntu18.04运行QQ音乐
- ZJYYC LSH去年买了个表(也是LZY去年买了个表) DFS
- 如何成为一个很厉害的人(时间之尺)
- “易+”开源 | 简单可信赖,GameSentry 正式开源
热门文章
- 在月球上你会看到这些神奇景象:不可思议
- Hexo博客发表文章、草稿、添加分类和标签
- 手机新手上路_术语_各种解释
- popupwindow 不抢夺焦点_不知道家里颜色怎么配?一起去翻画册吧!
- mysql php dll_php_pdo_mysql.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
- 盘点史上最危险的10种创业合伙人
- Neural network state estimation for full quantum state tomography笔记
- 计算机二级证书有用吗
- sklearn 数据加载工具(1)
- 获取安卓应用包名和入口 Activity