c httpclient抓取网页(如何用httpclient+jsoup实现抓取网页分享(图))

优采云 发布时间: 2022-02-19 15:06

  c 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爬取网页,希望对大家有所帮助。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线