爬虫技术-httpClent+jsoup
技术:httpClent+jsoup
任务:利用httpClent爬去网站信息,在利用jsoup解析
方法说明:
parseUrl(String url):传入相应的url返回该网页内容,网页必须是html类型格式
parseWebPage(String webPageContent):将网页解析出想要的元素
package com.open111.crawler;
import java.io.IOException;
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.HttpClients;
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;
/**
*
* 爬虫起始类
* @author user
*
*/
public class StartCrawler {
/**
* 解析网页内容
* @param webPageContent
*/
public static void parseWebPage(String webPageContent){
if("".equals(webPageContent)){//判断网页是否为空
return;
}
Document doc=Jsoup.parse(webPageContent);
Elements links=doc.select("a"); // 获取所有超链接元素
for(int i=0;i<links.size();i++){//遍历元素集合
Element link=links.get(i);//得到每个元素
String url=link.attr("href");//得到元素的属性
}
}
/**
* 解析网页请求
* @param url 请求的url
*/
public static void parseUrl(String url){
System.out.println("url:"+url);
CloseableHttpClient httpClient=HttpClients.createDefault(); // 创建httpclient实例
HttpGet httpGet=new HttpGet(url); // 创建httpget实例
CloseableHttpResponse response=null; //创建返回结果
try {
response=httpClient.execute(httpGet);//执行请求,得到返回结果
HttpEntity entity=response.getEntity(); // 获取返回实体
if("text/html".equals(entity.getContentType().getValue())){//如果返回结果是text/html则根据jsoup解析出想要的结果
String webPageContent=EntityUtils.toString(entity, "utf-8");
System.out.println("网页内容:"+webPageContent);
parseWebPage(webPageContent);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(response!=null){
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
httpClient.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}