【头歌】旅游网站大数据分析-数据抓取
第1关 : 利用Jsoup抓取携程旅游网的数据
任务描述
本关任务:使用 Jsoup
获取携程旅游网的数据。
相关知识
现在我们目标是获取携程旅游网的数据,然后将获取到的数据清洗,清洗一些无意义的数据,最后在存入到Hadoop
中,这样我们就完成了数据获取、数据清洗、数据存储。
现在我们要来一起完成第一步,数据获取,在我们知道一个网站地址的前提下,如何提取该网站的数据为我们所用呢?
需要一些工具,比如 Jsoup
。
Jsoup 的使用
jsoup
是一款 Java
的 HTML
解析器,可直接解析某个 URL
地址、 HTML
文本内容。它提供了一套非常省力的 API
,可通过 DOM
, CSS
以及类似于 jQuery
的操作方法来取出和操作数据。
jsoup
的主要功能如下:
从一个
URL
件或字符串中解析HTML
;使用
DOM
或CSS
选择器来查找、取出数据;可操作
HTML
元素、属性、文本;
jsoup
是基于 MIT
协议发布的,可放心使用于商业项目。
package step1;
import java.io.File;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;public class Task {/*** @param filePath 文件路径:backups/www.ctrip.com.txt/* @return* @throws IOException*/public Document getHtml1(String url) throws IOException{Document document = Jsoup.parse( new File( "./backups/www.ctrip.com.txt" ) , "utf-8" );// System.out.println(document.title());// System.out.println(document);return document;} /*** * @param url 网址http://hotels.ctrip.com/domestic-city-hotel.html* @return* @throws IOException*/public Document getHtml2(String url) throws IOException{Document document = Jsoup.parse( new File( "./backups/hotels.ctrip.com_domestic-city-hotel.txt" ) , "utf-8" );//System.out.println(document.title());return document;} }
第2关:解析并提取HTML 元素(一)
package step2;
import java.io.File;
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 Task {public Document getDoc1(String url) throws IOException{File file=new File("./backups/www.ctrip.com.txt");Document document =Jsoup.parse(file,"UTF-8","http://www.ctrip.com/");return document ;}//获取“http://you.ctrip.com/”的Docment对象public Document getDoc2(String url) throws IOException{File file=new File("./backups/you.ctrip.com.txt");Document document =Jsoup.parse(file,"UTF-8","http://you.ctrip.com");return document ;}//获取所有链接public Elements getLinks(Document doc){Elements links=doc.select("link[href]");return links;}//获取第一个class为“pop_attention”的divpublic Element getDiv(Document doc){Element element =doc.select("div.pop_attention").first();return element ;}//获取所有li之后的i标签public Elements getI(Document doc){Elements element =doc.select("li>i");return element ;}}
第3关:解析并提取HTML 元素(二)
package step3;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Task {//通过filePath文件路径获取Docment对象public Document getDoc(String filePath) throws IOException{/********** Begin **********/
File file=new File("./backups/hotel.ctrip.com.txt");Document doc=Jsoup.parse(file,"UTF-8","http://hotels.ctrip.com/");return doc;/********** End **********/}//获取所有链接public List<String> getLinks(Document doc){/********** Begin **********/List<String> ar=new ArrayList<>();Elements kk=doc.select("a[href]");for(Element gg:kk){ar.add(gg.tagName()+"$"+gg.attr("abs:href")+"("+gg.text()+")"); } return ar; /********** End **********/}//获取图片public List<String> getMedia(Document doc){/********** Begin **********/List<String> list=new ArrayList<>(); Elements ll=doc.select("[src]"); for(Element h:ll){ if(h.tagName().equals("img")){ list.add(h.tagName()+"$"+h.attr("abs:src"));}}return list;/********** End **********/}//获取link[href]链接public List<String> getImports(Document doc){/********** Begin **********/
List<String> list=new ArrayList<>();Elements kk=doc.select("link[href]");for(Element g:kk){list.add(g.tagName()+"$"+g.attr("abs:href")+"("+g.attr("rel")+")");}return list;/********** End **********/}}
第4关:使用Jsoup抓取携程旅游网全国城市信息
package step4;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Task {public Document getDoc(String url) throws IOException{File file=new File("backups/hotels.ctrip.com_domestic-city-hotel.txt");Document doc=Jsoup.parse(file,"UTF-8","http://hotels.ctrip.com/");return doc;}/*** 获取所有城市返回城市信息集合* @param doc * @return*/public List<HotelCity> getAllCitys(Document doc){List<HotelCity> cities = new ArrayList<HotelCity>(); Elements aa= doc.getElementsByClass("pinyin_filter_detail layoutfix");Element pp = aa.first();Elements hh= pp.getElementsByTag("dd");Elements hts=pp.getElementsByTag("dt");for (int i = 0; i < hh.size(); i++) {Element bb = hts.get(i);Element head_hotelsLink = hh.get(i);Elements links = head_hotelsLink.children();for (Element link : links) {String pinyin_cityId = link.attr("href").replace("/hotel/", "");String pinyin = pinyin_cityId.replace(StringUtil.getNumbers(link.attr("href")), "");//截取拼音HotelCity city = new HotelCity();city.setCityId(StringUtil.getNumbers(link.attr("href"))); //截取cityIdcity.setCityName(link.text());city.setHeadPinyin(bb.text());city.setPinyin(pinyin);cities.add(city);}}return cities;}}
【头歌】旅游网站大数据分析-数据抓取相关推荐
- 旅游网站大数据分析 - 数据抓取
第1关:利用Jsoup抓取携程旅游网的数据 任务描述 本关任务:使用Jsoup获取携程旅游网的数据. 相关知识 现在我们目标是获取携程旅游网的数据,然后将获取到的数据清洗,清洗一些无意义的数据,最后在 ...
- 旅游网站大数据分析 - 数据存储
第1关:保存酒店和城市数据 本关任务:从文件aomen.txt.hongkong.txt中获取酒店和城市数据,保存到Hbase中. package com.savedata;import java.i ...
- python足球大数据分析_Python 抓取欧洲足球联赛数据进行大数据分析
摘要: 背景 Web Scraping 在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤 数据的采集和获取 数据的清洗,抽取,变形和装载 数据的分析,探索和预测 数据的展 ...
- 旅游网站大数据分析 - 数据清洗
第1关:清洗HTML文档中无意义数据 将获取到携程网的城市酒店的HTML数据(包含了所有元素)进行清洗,得到我们需要的标签数据. package step1;import java.io.File; ...
- 基于Hadoop的豆瓣电影的数据抓取、数据清洗、大数据分析(hdfs、flume、hive、mysql等)、大屏可视化
目录 项目介绍 研究背景 国内外研究现状分析 研究目的 研究意义 研究总体设计 数据获取 网络爬虫介绍 豆瓣电影数据的采集 数据预处理 数据导入及环境配置 Flume介绍 Hive介绍 MySQL介绍 ...
- 免费网站数据抓取插件,可视化页面数据抓取插件
网站页面数据抓取插件,允许我们将数据从网站直接抓取到我们的本地或者页面.网站网页数据抓取(也称为ScreenScraping.WebDataExtraction.WebHarvesting等)是一种用 ...
- 数据抓取之(一):抓取北京交通管理网站的车辆违法信息(已完结)
我的个人信息: 本猿92年小生一枚,10级三流本科院校的软件工程专业,今年2013年10月份开始实习,说长不长说短不短的时间混迹在中小型互联网公司,主要从事的java研发工作.更确切一点的职责则是数据 ...
- B站2020年每周必看热门视频数据盘点(数据分析)1.数据抓取2.数据清洗3.数据分析及可视化
1.数据抓取 数据集的获取是我们进行数据分析的第一步.现在获取数据的主要途径一般为:现成数据:自己写爬虫去爬取数据:使用现有的爬虫工具爬取所需内容,保存到数据库,或以文件的形式保存到本地. 博主用的是 ...
- 《数据科学与大数据分析——数据的发现 分析 可视化与表示》一2.3 第2阶段:数据准备...
本节书摘来自异步社区<数据科学与大数据分析--数据的发现 分析 可视化与表示>一书中的第2章,第2.3节,作者[美]EMC Education Services(EMC教育服务团队),更多 ...
最新文章
- 图解反向代理和正向代理。
- linux下的打包与压缩
- WPF的Clipboard.SetText()有问题
- 数据分析与挖掘-python常用数据探索函数
- sap实施和开发哪个前景_2021年了!还不知道 SAP顾问的职业前景?
- 使用 OpenCL.Net 进行 C# GPU 并行编程
- Linux卸载/删除多余网卡
- registry:NoSuchMethodError zookeeper.server.quorum.flexible.QuorumMaj
- arm中的.a文件如何产生的_如何在IPFS中Pin一个文件?
- 1002 写出这个数 (20 分)—PAT (Basic Level) Practice (中文)
- 写写做数模竞赛的经验
- dlna 斐讯r1怎么用_斐讯R1智能(蓝牙)音箱固件升级教程
- [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.26
- 求齐次线性方程组的基础解系matlab,MATLAB学习笔记:齐次线性方程组的基础解系...
- precede和previous_构词法词缀
- dango之day01
- JDBC实现多条件查询万能解决思路
- 量子计算基础——矩阵语言
- 网易游戏实习电话面试
- 永恒python奇美拉_利用USearch去除嵌合体(chimeras)