c httpclient抓取网页(如何用httpclient+jsoup实现抓取网页分享(图))
优采云 发布时间: 2022-02-19 15:06c httpclient抓取网页(如何用httpclient+jsoup实现抓取网页分享(图))
和之前的博客一样,在学习用httpclient实现网络爬虫的时候,在网上查了很多资料,但是httpclient的版本是之前的版本3.1或者4.3。我通过学习了解了httpclient4.5。今天给大家分享一下我自己用httpclient+jsoup爬取网页的实现。
httpclient+jsoup 获取网页非常简单。首先可以通过httpclient的get方法获取一个网页的所有内容(如果有什么不懂的可以看我之前关于get方法的解释),然后使用jsoup获取一个网页的所有内容网页。解析内容,获取该网页中的所有链接,然后通过get方法获取这些链接中的网页内容,这样我们就可以获取到一个网页下所有链接的网页内容。例如,如果我们得到一个下面有 50 个链接的网页,我们可以得到 50 个网页。下面是代码,大家感受一下
获取网址
public class GetUrl {
public static List getUrl(String ur) {
//创建默认的httpClient实例
CloseableHttpClient client = HttpClients.createDefault();
//创建list存放已读取过的页面
List urllist = new ArrayList();
//创建get
HttpGet get=new HttpGet(ur);
//设置连接超时
Builder custom = RequestConfig.custom();
RequestConfig config = custom.setConnectTimeout(5000).setConnectionRequestTimeout(1000).setSocketTimeout(5000).build();
get.setConfig(config);
//设置消息头部
get.setHeader("Accept", "Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
get.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2");
try {
//执行get请求
CloseableHttpResponse response = client.execute(get);
//获取响应实体
HttpEntity entity = response.getEntity();
//将响应实体转为String类型
String html = EntityUtils.toString(entity);
//通过jsoup将String转为jsoup可处理的文档类型
Document doc = Jsoup.parse(html);
//找到该页面中所有的a标签
Elements links = doc.getElementsByTag("a");
int i=1;
for (Element element : links) {
//获取到a标签中href属性的内容
String url = element.attr("href");
//对href内容进行判断 来判断该内容是否是url
if(url.startsWith("http://blog.csdn.net/") && !urllist.contains(url)){
GetPage.getPage(url);
System.out.println(url);
urllist.add(url);
i++;
}
}
response.close();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return urllist;
}
}
根据获取的url生成页面
最后是测试课
public class Test {
public static void main(String[] args) {
List list = GetUrl.getUrl("http://blog.csdn.net/");
System.out.println("所写链接内的所有内容");
int i=1;
for (String url : list) {
GetUrl.getUrl(url);
System.out.println("第"+i+"条链接内容");
i++;
}
}
}
以上就是如何使用httpclient+jsoup爬取网页,希望对大家有所帮助。