什么是网络爬虫
网络爬虫英文可以叫crawler,也可以叫spider,简而言之就是利用计算机从网上抓取你所感兴趣的文件、图片、视频等。其实在大多数情况下,没有什么网络爬虫,我们也可以根据自己所需要的,通过浏览器从网上下载东西,(而网络爬虫的实质也是在模仿浏览器进行一系列的操作)但是如果我们所要的东西特别多时,例如要下载10000张图片,一个个用手去点岂不太麻烦了,所以我们需要利用到计算机来帮助我们爬取。
爬虫中用到的常用工具
用计算机进行数据的抓取的能动性肯定不如手动,但我们将抓取的逻辑、规律告诉计算机,那他的动作将变得很快,编写爬虫程序的过程也就是寻找规律的过程。
我们都知道网络上的资源都有属于自己的URL,我们所要做的就是一步步的寻找所要资源的URL,并把寻找URL的规律告诉计算机,通过URL来下载资源。
对于前期的探索工作,我们就需要借助一些工具,通过这些工具来了解对一个URL进行访问的时候到底发生了什么,最常见的就是浏览器自带的“开发者工具”,一般在浏览器的右上角可以找到,把他打开,点开web控制台中的网络一栏,当我们进行网页的打开、链接的点击时,控制台中就会显现出受到的数据包,从这些数据包中就可以看到请求的url,请求方式,请求头,响应头,响应内容等。
还有一个比较常用的工具叫Fiddler,是一个专业的抓包软件,他的作用就相当于一个中间人,站在通信的两个人中间,信息的流通都会经过他,这样来往了什么内容他都能获取。
在写爬虫程序的时候能灵活的运用这些工具会带来很大的便利。
用Python写爬虫
编程语言只是达到目的的工具,不是目的本身,用其他语言也可以用来写爬虫,比如JAVA,但相比Python,从一个“Helloworld”就可以看出JAVA的代码量较大,对于一个小的爬虫来说,有点冗余,并且由于Python有着庞大的第三方库的支持,近年来还在不断成长,咱不能说Python比JAVA好,但就爬虫来说,用Python较为适合。
urllib库
urllib是python中用于模拟浏览器发送请求的库,是python自带的,不需要另外下载的。在urllib中包含四个模块:
1.request:是用于模拟浏览器发送请求的核心模块。
2.parse:是一个对URL进行处理的模块,进行URL编码解码。
3.error:处理在爬取过程中发生异常的模块,例如没网,连接失败等。
4.robotparser:用于解析robot.txt文件的模块,robots.txt是用来告诉搜索引擎网站上哪些内容可以被访问、哪些不能被访问。当搜索引擎访问一个网站的时候,它首先会检查网站是否存在robots.txt,如果有则会根据文件命令访问有权限的文件。
在这四个模块当中较为常用是前两个,如果想把程序写的漂亮,第三个也会用到,接下来主要就request,parse做一些介绍。
urllib.request
urllib.request当中最常用的方法是urlopen(url),即向指定的url发送请求,他会返回一个对象,对象包含着返回回来的各种信息,实例如下: