<!--网络爬虫-->
<!-- 添加Httpclient支持 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<!-- 添加jsoup支持 -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.1</version>
</dependency>
public class crawler {
//解析网页的内容
public static void paseWebPage(String content){
if("".equals(content)){
return;
}
//这里采用Jsoup
/* Jsoup是一款比较好的Java版HTML解析器。可直接解析某个URL地址、HTML文本内容
* 这里用来解析html字符串(我们的例子就是),返回的Document对象(一个文档的对象模型):文档由多个Elements和TextNodes组成
* */
Document doc= Jsoup.parse(content);
//这是组合用法,通过子标签组合来定位节点(d1>dd>a写法一样可行)
Elements links= doc.select("dl dd a");
//开始获取节点的内容
/* attr(String key)获得元素的数据 attr(String key, String value) 设置元素数据
attributes() 获得所以属性
id(),className(),classNames()获得id class得值
text() 获得文本值
text(String value) 设置文本值
html() 获取html
html(String value) 设置html
outerHtml() 获得内部html
data() 获得数据内容
tag() 获得tag 和 tagName() 获得tagname*/
for (int i=0;i< links.size();i++){
Element link= links.get(i);
String url=link.attr("href");
System.out.println("提取的内容"+"https://www.huangyixiaoshuo.com"+url+"目录"+link.text());
}
}
//获得爬虫的网页内容
public static void paseUrl(String url){
//首先我们先获得Http客户端(作用就类似我们的浏览器,通过他来发送请求)
CloseableHttpClient httpClient=HttpClients.createDefault();
//准备Get请求(HTTP的get方法)
HttpGet httpGet= new HttpGet(url);
//响应模型(用来我们HTTP请求的返回)
CloseableHttpResponse response=null;
//可以理解为我们现在有了浏览器和HTTP请求,那么现在就是处理响应的内容
try {
//由客户端发送GET请求
response=httpClient.execute(httpGet);
//从响应中获得响应的实体
HttpEntity entity=response.getEntity();
//响应内容的类型(我这次采用爬小说网站,所以返回的是text/html)
System.out.println("内容类型"+entity.getContentType().getValue());
if("text/html; charset=UTF-8".equals(entity.getContentType().getValue())){
//返回响应内容
String content= EntityUtils.toString(entity,"UTF-8");
System.out.println(content);
paseWebPage(content);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
//结束要关掉这些
if(response!=null){
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
paseUrl("https://www.huangyixiaoshuo.com/0/487/");
}
}
效果图
还有的后面有空继续写,有多余时间弄个爬虫的小说网站