我我我我我又回来了,好久没更新,昨天写的项目突然需要解析一个网页获取到指定数据,自然的就想到了爬虫。好了下面开始。
下面来说说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();
}
}
好了就到这里吧,看完记得点个赞。