• 大小: 10KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: Java
  • 标签: 爬虫  

资源简介

很简易的java爬虫 可以爬取携程的航班数据,并使用jsoup进行解析

资源截图

代码片段和文件信息

package com.Interface;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;


import net.sf.json.JSONArray;
import net.sf.json.JSONobject;

public class CrawlerHttpClient {

// 创建一个客户端 类似打开一个浏览器
private static CloseableHttpClient httpClient = HttpClientBuilder.create().build();
// 创建一个get方法,类似在浏览器中输入一个地址,path则为URL的值
static HttpGet httpGet;
static CloseableHttpResponse response;
static HttpEntity httpEntity;
private static Map map;
static {
map = new HashMap();
map.put(“KY“ “昆明航空“);
}
    
public static void getAirLineDetails(String flight) {
String time = getDateString(-1 “yyyyMMdd“);// new Date()为获取当前系统时间
String path = “https://flights.ctrip.com/actualtime/fno--“ + flight + “-“ + time + “.html“;
// 创建get请求
httpGet = new HttpGet(path);

httpGet.setHeader(“User-Agent“
“Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/74.0.3729.131 Safari/537.36“);
String airLineName = null;
String airLineNo = null;
String airLineDate = null;
String airLineDay = ““;
String timetakeOff = ““;
String planTakeOff = ““;
String timeArrive = ““;
String planArrive = ““;
String airLineStartCity = ““;
String airLineEndCity = ““;
try {

// 获取响应模型
 response = httpClient.execute(httpGet);
// 获取响应实体
     httpEntity = response.getEntity();
if (httpEntity != null) {
// System.out.println(“响应内容长度为:“ + httpEntity.getContentLength());
// System.out.println(“响应内容为:“ + EntityUtils.toString(httpEntity));
Document doc = Jsoup.parse(EntityUtils.toString(httpEntity));
airLineName = doc.select(“div.detail-t“).select(“span.ml5“).first().text();

// System.out.println(“航空公司:“ + airLineName);
airLineNo = doc.select(“div.detail-t“).select(“strong.ml5“).text();
// System.out.println(“航班号:“ + airLineNo);
airLineDate = doc.select(“div.detail-t“).select(“span.ml10“).first().text();
// System.out.println(“航班日期:“ + airLineDate);
airLineDay = doc.select(“div.detail-t“).select(“span.ml5“).last().text();
// System.out.println(“周几:“ + airLineDay);
Elements airLineDetails = doc.select(“div.detail-m“);
//System.out.println(doc.select(“div.detai

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      13360  2019-07-18 11:59  air\.classpath

     文件        585  2019-07-18 11:52  air\.project

     文件        718  2019-07-18 11:52  air\.settings\org.eclipse.jdt.core.prefs

     文件        206  2019-07-18 11:58  air\.settings\org.eclipse.wst.common.project.facet.core.xml

     文件       9658  2019-07-18 14:20  air\bin\com\Interface\CrawlerHttpClient.class

     文件      10804  2019-07-18 14:20  air\src\com\Interface\CrawlerHttpClient.java

     目录          0  2019-07-19 11:22  air\bin\com\Interface

     目录          0  2019-07-19 11:22  air\src\com\Interface

     目录          0  2019-07-19 11:22  air\bin\com

     目录          0  2019-07-19 11:22  air\src\com

     目录          0  2019-07-19 11:22  air\.settings

     目录          0  2019-07-19 11:22  air\bin

     目录          0  2019-07-19 11:22  air\src

     目录          0  2019-07-19 11:22  air

----------- ---------  ---------- -----  ----

                35331                    14


评论

共有 条评论