这是一篇对于爬虫初学者的简单教程,需要一点正则表达式的基础。
爬虫,主要是爬取页面的展示元素,即查看源代码的内容。(鼠标右键可看到)(如下图所示)
那么,最基础的获取这个源代码。
1.获取源代码
/**
* 获取网页源码
*/
public String getHtml(String url) throws Exception {
URL url1 = new URL(url);
URLConnection connection = url1.openConnection();
InputStream in = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
sb.append(line, 0, line.length());
sb.append('\n');
}
br.close();
isr.close();
in.close();
return sb.toString();
}
大致用到了一些URL的函数,反正我们传一个网站的地址即可
效果如下:
它已String型存储在一个变量里,供我们后续使用。
假设,我们想要获取title里面的文字,从这个String型中直接indexof显得效率太慢
title在文中是这样显示的
<title>写文章-CSDN博客</title>
这里我们可以用无敌无敌好用的正则表达式来捕捉它。
2.正则表达式
关于正则表达式,可以去网站上随意搜索一下就可以简单入门了。
这里,就给大家推荐一个检测正则表达式是否正确的网站
最早我是这样处理的
<title>以这个打头 .*匹配任意文字到行末,结果是这样的 <title>写文章-CSDN博客</title>
多了一点奇怪的东西
(?<=<title>).+?(?=<) 用这个表达式,以<title>开头,<结尾(</title>的第一个字符)
正则表达式使用如下
// 获取标题
// 正则表达式 (标题) "(?<=<title>).+?(?= )";
String IMGSRC_REG_TITLE = "(?<=<title>).+?(?= )";
Matcher matcher1 = Pattern.compile(IMGSRC_REG_TITLE).matcher(HTML);
while (matcher1.find()) {
TITLE = matcher1.group();
break;
}
最终TiTle的值是 “写文章-CSDN博客“。这样一来我们就初步完成了脚本的制作
接下来见我的第二篇文章
(代码在我写完后会贴出的)