网络爬虫学习笔记(一)

来源:互联网 发布:什么软件看课表 编辑:程序博客网 时间:2024/04/27 22:19

一个简单网络爬虫的实现

——初尝试 抓取百度首页


       由于分组我选择了网络爬虫组,在了解了一些简单的概念性知识之后,便迫不及待的想要动手尝试一下自己抓取网页信息,在此分享一下自己学习网络爬虫的过程。

       首先,什么是网络爬虫? 以下是百度百科的定义

      网络爬虫学习笔记(一) - ㄟ As time goes by℡ - ㄟ As time goes by℡

 那么,网络爬虫的基本工作原理又是什么?
1)从一个初始URL集合中挑选一个URL,下载该URL对应的页面;
2)解析该页面,从该页面中抽取出其包含的URL集合,接下来将抽取的URL集合再添加到初始URL集合中;
3)重复前两个过程,直到爬虫达到某种停止标准为止。

       我是用Java语言来写网络爬虫的,所以初期是在学习Java语言的语法知识,并且因为抓取到的页面信息是由HTML写的,所以也简单的对HTML做了一些了解,大概知道某些标签的含义即可。

       在动手开始写网络爬虫之前,学长推荐了几个比较好用的jar包给我,也在此贴上。

Jsoup: http://pan.baidu.com/s/1kW2NU

文档:http://www.open-open.com/jsoup/

FileUtils: http://pan.baidu.com/s/1y3Adr

文档:http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html

 

       通过阅读Jsoup文档我们发现,其实要抓取一个页面非常简单,这里以http://www.baidu.com 为例:

  1. Document doc = Jsoup.connect("http://www.baidu.com").get();  
connect(String url)方法会创建一个新的Connection,然后通过get()方法获得一个Document对象;
其实剩下的就是一个对HTML的解析工作了,比如通过doc.toString()方法就可以获取到网页HTML的字符串,然后通过I/O操作可以吧这个字符串保存在本地文件中,这样一个简单的抓取工作就结束了,只需要几行代码而已。
在抓取到的HTML文件中可以看到
网络爬虫学习笔记(一) - ㄟ As time goes by℡ - ㄟ As time goes by℡
 这其中其实包含着很多的URL,而每一个URL又会跳转到其他的页面,上面说的网络爬虫的基本定义中讲到需要将抓取到的页面中的URL取出再添加到新的URL集合中进行抓取,那么我该如何提取这些URL呢?
  1. Elements links = doc.select("a");  
  2. for ( Element link : links ) {  
  3.     String linkHref = link.attr("href");  
  4. }
通过这样几条语句就可以得到页面中<a>标签下的href属性了,加在for循环中就可以遍历到页面中的所有URL,这些内容在上面的Jsoup文档中也有讲到;之后只要通过上面的方法进行就可以得到这些URL对应的HTML文本了。
上面还说道一个jar包是FileUtils,他可以很方便的进行文件读写操作,例如在上面我们得到的一个页面HTML字符串暂且用Str来表示,使用FileUtils只需要一条语句便可以将其保存到本地。
  1. FileUtils.writeStringToFile(new File("baidu.html"), Str, "UTF-8");
它的含义就是将Str字符串以"UTF-8"的编码方式保存在当前目录下的baidu.html文件中
在之后的学习中还会用到这个包中的其他方法,具体请参考API文档

这样,一个最简单的网络爬虫就成功了,还有很多的功能需要添加,加油!
0 0
原创粉丝点击