我我我我我又回来了,好久没更新,昨天写的项目突然需要解析一个网页获取到指定数据,自然的就想到了爬虫。好了下面开始。
下面来说说what is 爬虫。算了自己去百度吧,这个没营养。昨天才发现原来不止python可以爬数据,JAVA也可以。JAVA果然是世界上最好的语言。哈哈哈哈哈哈哈。
进入正题
首先自己建一个MAVEN项目
怎么建就不说了,直接贴依赖了。

<dependency>
			<groupId>org.jsoup</groupId>
			<artifactId>jsoup</artifactId>
			<version>1.11.3</version>
		</dependency>

开始撸代码,里面有一些jsoup(爬虫)的方法,其它的就不另写了,自行百度,直接拿项目里代码的贴了

/**
	 * 通过标签id获得父标签,然后根据属性来找到对应速率
	 * 再通过id找到channel
	 * @param url
	 * @return
	 */
	public static String getChannel(String url){
		try {
			//这是自己建的实体类
			channel = new Channel();
			//获得document
			Document doc = Jsoup.connect(url).get();
			//这个是精确查找,只会返回一个对象,是通过id找的,id设计机密,我瞎造了
			Element result = doc.getElementById("dsad");
			//这是通过属性来找,属性可能重复,所以返回的是对象集合
			Elements elements = result.getElementsByAttributeValue("selected", "selected");
			channel.setRate(elements.get(0).ownText());
			//一样的也是通过id查找
			Element result2 = doc.getElementById("dddd");
			//这个是获取值的操作
			channel.setChannel(result2.val());
		} catch (IOException e) {
			e.printStackTrace();
		}
		return channel.toString();
	}

接下来是吧字符串换成html来解析,调用了prase方法,贴代码

public static void getChannel(String url){
		//这个是retforit的,这里先不总结,以后再说。
		Call<String> call = RetrofitHelper.getInstance(url).getAppServer()
				.uploadData("root", "root");
		call.enqueue(new Callback<String>() {
			public void onResponse(Call<String> call, Response<String> response) {
				channel = new Channel();
				//response.body()是String类型的,然后调用Jsoup.prase把他改成document类型,就可以和之前一样操作了
				Document document = Jsoup.parse(response.body());
				Element result = document.getElementById("dddd");
				Elements elements = result.getElementsByAttributeValue("selected", "selected");
				channel.setRate(elements.get(0).ownText());
				Element result2 = document.getElementById("ddd");
				channel.setChannel(result2.val());
				System.out.println(channel.toString());
			}

			public void onFailure(Call<String> call, Throwable t) {
				System.out.println(t.toString());
			}
		});
	}

是不是以为这就没了,嘎嘎嘎嘎嘎,还有还有,接下来是直接访问本地资源,上代码

public static void main(String[] args) {
        try {
            Document document = Jsoup.parse(new File("c://hhhh.html"), "utf-8");
            System.out.println(document);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

好了就到这里吧,看完记得点个赞。