第1关 : 利用Jsoup抓取携程旅游网的数据

任务描述

本关任务:使用 Jsoup 获取携程旅游网的数据。

相关知识

现在我们目标是获取携程旅游网的数据,然后将获取到的数据清洗,清洗一些无意义的数据,最后在存入到Hadoop中,这样我们就完成了数据获取、数据清洗、数据存储

现在我们要来一起完成第一步,数据获取,在我们知道一个网站地址的前提下,如何提取该网站的数据为我们所用呢?

需要一些工具,比如 Jsoup

Jsoup 的使用

jsoup 是一款 JavaHTML 解析器,可直接解析某个 URL 地址、 HTML 文本内容。它提供了一套非常省力的 API ,可通过 DOMCSS 以及类似于 jQuery 的操作方法来取出和操作数据。

jsoup 的主要功能如下:

  • 从一个 URL 件或字符串中解析 HTML

  • 使用 DOMCSS 选择器来查找、取出数据;

  • 可操作 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. 旅游网站大数据分析 - 数据抓取

    第1关:利用Jsoup抓取携程旅游网的数据 任务描述 本关任务:使用Jsoup获取携程旅游网的数据. 相关知识 现在我们目标是获取携程旅游网的数据,然后将获取到的数据清洗,清洗一些无意义的数据,最后在 ...

  2. 旅游网站大数据分析 - 数据存储

    第1关:保存酒店和城市数据 本关任务:从文件aomen.txt.hongkong.txt中获取酒店和城市数据,保存到Hbase中. package com.savedata;import java.i ...

  3. python足球大数据分析_Python 抓取欧洲足球联赛数据进行大数据分析

    摘要: 背景 Web Scraping 在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤 数据的采集和获取 数据的清洗,抽取,变形和装载 数据的分析,探索和预测 数据的展 ...

  4. 旅游网站大数据分析 - 数据清洗

    第1关:清洗HTML文档中无意义数据 将获取到携程网的城市酒店的HTML数据(包含了所有元素)进行清洗,得到我们需要的标签数据. package step1;import java.io.File; ...

  5. 基于Hadoop的豆瓣电影的数据抓取、数据清洗、大数据分析(hdfs、flume、hive、mysql等)、大屏可视化

    目录 项目介绍 研究背景 国内外研究现状分析 研究目的 研究意义 研究总体设计 数据获取 网络爬虫介绍 豆瓣电影数据的采集 数据预处理 数据导入及环境配置 Flume介绍 Hive介绍 MySQL介绍 ...

  6. 免费网站数据抓取插件,可视化页面数据抓取插件

    网站页面数据抓取插件,允许我们将数据从网站直接抓取到我们的本地或者页面.网站网页数据抓取(也称为ScreenScraping.WebDataExtraction.WebHarvesting等)是一种用 ...

  7. 数据抓取之(一):抓取北京交通管理网站的车辆违法信息(已完结)

    我的个人信息: 本猿92年小生一枚,10级三流本科院校的软件工程专业,今年2013年10月份开始实习,说长不长说短不短的时间混迹在中小型互联网公司,主要从事的java研发工作.更确切一点的职责则是数据 ...

  8. B站2020年每周必看热门视频数据盘点(数据分析)1.数据抓取2.数据清洗3.数据分析及可视化

    1.数据抓取 数据集的获取是我们进行数据分析的第一步.现在获取数据的主要途径一般为:现成数据:自己写爬虫去爬取数据:使用现有的爬虫工具爬取所需内容,保存到数据库,或以文件的形式保存到本地. 博主用的是 ...

  9. 《数据科学与大数据分析——数据的发现 分析 可视化与表示》一2.3 第2阶段:数据准备...

    本节书摘来自异步社区<数据科学与大数据分析--数据的发现 分析 可视化与表示>一书中的第2章,第2.3节,作者[美]EMC Education Services(EMC教育服务团队),更多 ...

最新文章

  1. 图解反向代理和正向代理。
  2. linux下的打包与压缩
  3. WPF的Clipboard.SetText()有问题
  4. 数据分析与挖掘-python常用数据探索函数
  5. sap实施和开发哪个前景_2021年了!还不知道 SAP顾问的职业前景?
  6. 使用 OpenCL.Net 进行 C# GPU 并行编程
  7. Linux卸载/删除多余网卡
  8. registry:NoSuchMethodError zookeeper.server.quorum.flexible.QuorumMaj
  9. arm中的.a文件如何产生的_如何在IPFS中Pin一个文件?
  10. 1002 写出这个数 (20 分)—PAT (Basic Level) Practice (中文)
  11. 写写做数模竞赛的经验
  12. dlna 斐讯r1怎么用_斐讯R1智能(蓝牙)音箱固件升级教程
  13. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.26
  14. 求齐次线性方程组的基础解系matlab,MATLAB学习笔记:齐次线性方程组的基础解系...
  15. precede和previous_构词法词缀
  16. dango之day01
  17. JDBC实现多条件查询万能解决思路
  18. 量子计算基础——矩阵语言
  19. 网易游戏实习电话面试
  20. 永恒python奇美拉_利用USearch去除嵌合体(chimeras)

热门文章

  1. 使用DSP完成Id=0的永磁同步电机闭环控制思路
  2. emplace_back深度剖析
  3. WebLogic Server 9.2 直接下载 地址分享
  4. Android第三方开源对话消息提示框:SweetAlertDialog(sweet-alert-dialog)
  5. 机器人学习--ROS学习入门
  6. Spline算法实现
  7. 关于5G时延的深度解读,非常详尽
  8. 【基础编程】猜数字游戏的提示
  9. Baumer工业相机VCX系列相机硬件触发流程和设置
  10. Oracle Flashback 知行合一