上一集中咱们说到须要用Java来制做一个知乎爬虫,那么这一次,咱们就来研究一下如何使用代码获取到网页的内容。html
首先,没有HTML和CSS和JS和AJAX经验的建议先去W3C(点我点我)小小的了解一下。java
说到HTML,这里就涉及到一个GET访问和POST访问的问题。正则表达式
若是对这个方面缺少了解能够阅读W3C的这篇:《GET对比POST》。浏览器
啊哈,在此再也不赘述。网络
而后咧,接下来咱们须要用Java来爬取一个网页的内容。函数
这时候,咱们的百度就要派上用场了。工具
没错,他再也不是那个默默无闻的网速测试器了,他即将成为咱们的爬虫小白鼠!~测试
咱们先来看看百度的首页:url
相信你们都知道,如今这样的一个页面,是HTML和CSS共同工做的结果。spa
咱们在浏览器中右击页面,选择“查看页面源代码”:
没错,就是这一坨翔同样的东西。这就是百度页面的源代码。
接下来咱们的任务,就是使用咱们的爬虫也获取到同样的东西。
先来看一段简单的源码:
以上就是Java模拟Get访问百度的Main方法,
能够运行一下看看结果:
啊哈,和咱们前面用浏览器看到的如出一辙。至此,一个最最简单的爬虫就算是作好了。
可是这么一大坨东西未必都是我想要的啊,怎么从中抓取出我想要的东西呢?
以百度的大爪子Logo为例。
临时需求:
获取百度Logo的大爪子的图片连接。
先说一下浏览器的查看方法。
鼠标对图片右击,选择审查元素(火狐,谷歌,IE11,均有此功能,只是名字不太同样):
啊哈,能够看到在一大堆div的围攻下的可怜的img标签。
这个src就是图像的连接了。
那么在java中咱们怎么搞呢?
事先说明,为了方便演示代码,全部代码均未做类封装,还请谅解。
咱们先把前面的代码封装成一个sendGet函数:
这样看起来稍微整洁了一点,请原谅我这个强迫症。
接下来的任务,就是从获取到的一大堆东西里面找到那个图片的连接。
咱们首先能够想到的方法,是对页面源码的字符串result使用indexof函数进行String的子串搜索。
没错这个方法是能够慢慢解决这个问题,好比直接indexOf("src")找到开始的序号,而后再稀里哗啦的搞到结束的序号。
不过咱们不能一直使用这种方法,毕竟草鞋只适合出门走走,后期仍是须要切假腿来拿人头的。
请原谅个人乱入,继续。
那么咱们用什么方式来寻找这张图片的src呢?
没错,正以下面观众所说,正则匹配。
若是有同窗不太清楚正则,能够参照这篇文章:[Python]网络爬虫(七):Python中的正则表达式教程。
简单来讲,正则就像是匹配。
好比三个胖子站在这里,分别穿着红衣服,蓝衣服,绿衣服。
正则就是:抓住那个穿绿衣服的!
而后把绿胖子单独抓了出来。
就是这么简单。
可是正则的语法却仍是博大精深的,刚接触的时候不免有点摸不着头脑,
向你们推荐一个正则的在线测试工具:正则表达式在线测试。
有了正则这个神兵利器,那么怎么在java里面使用正则呢?
先来看个简单的小李子吧。
啊错了,小栗子。
运行结果:
index.html
没错,这就是咱们的第一个正则代码。
这样应用的抓取图片的连接想必也是信手拈来了。
咱们将正则匹配封装成一个函数,而后将代码做以下修改:
好的,如今万事俱备,只差一个正则语法了!
那么用什么正则语句比较合适呢?
咱们发现只要抓住了src="xxxxxx"这个字符串,就能抓出整个src连接,
因此简单的正则语句:src=\"(.+?)\"
完整代码以下:
这样咱们就能用java抓出百度LOGO的连接了。
好吧虽然花了不少时间讲百度,可是基础要打扎实啦,下次咱们正式开始抓知乎咯!~