学了一段时间的爬虫,现在就把我的一些经验分享给大家。学习爬虫的时候可以用本文作为适当的参考,有不当的或者不明确或者对本文有意见的地方都请大家指出,能让本文加以改正,更加完善。
python 版本2.7
爬虫的介绍
首先爬虫是什么 ?
在我看来 爬虫是能够自动联网 通过指定的方式获取网络上的一些信息 并把这些信息下载到本地的程序或脚本
那么爬虫的可爬取的范围有多少?
凡是能够通过浏览器获得的所有内容都能够爬取得到。
爬取的作用是什么?
爬取的作用是能够自动地获取自己想要的一些有价值的信息。
爬虫的核心结构
爬虫的核心结构有三点,请求,解析,以及存储
这三点会逐个单独的讲解
请求
浏览器是获取信息最常用的方式之一,爬虫的原理和浏览器的原理在某些地方是一致的
那么我们首先了解通过浏览器是怎样获取信息的
以简书为例 首先在浏览器的导航栏里输入http://www.jianshu.com/ 然后按下回车键 ,内容就出来了,当然还可能有其他的内容之类的。回过头来,我们要获取简书的内容,首先得提前通知简书服务器我要访问你啦,你把你的首页的数据给我,让我可以浏览。这种提前通知的方式,就是请求。
我请求简书首页的数据,简书服务器表示我收到了,然后顺着你的IP的地址就给你发过来了。
然后简书搜索框和以及其他内容就会被渲染出来。
学过WEB的肯定知道,百度首页或者说绝大多数网页的内容数据都是通过HTML+CSS以及数据库的数据来组合在一起的。那么为什么浏览器上面没有这些标签呢,这个大家肯定知道,是因为浏览器渲染了这些数据,至于是怎么渲染的那么是另一回事了。那么没有经过渲染的数据就是源码,而我们爬取得到的就是网页的源码。
然后我们可以看看这些源码,拥有非常多的标签在里面,但是我们并不需要。
这时候需要通过解析的方式获取我们想要的数据了。
解析
如何才能在这些网页源代码中找到我们需要的数据呢,就得用解析了。
我解析的方式一般有两种,一种是正则表达式,而另外一种则是DOM树+XPATH。而我现在主要用的方式则是第二种。两种方式的区别是我用一个例子来阐述,A和B夫妻给全家卖了圣诞礼物,儿子C问属于他的那份在哪,母亲A告诉儿子,礼物是在一个红色礼物和一个黄色礼物之间,父亲B告诉儿子礼物是在所有方形礼物盒中的最小的那份。正则表达式就是例子中的A方法,DOM树+XPATH则是B方法。
在我看来 正则表达式倾向于一维位置的搜索,而DOM树更倾向于二维特征的搜索。
储存
针对定位后的数据的存储就很好办了,只要定位数据后把数据保存到本地即可。
也可以直接print到终端,或者保存到TXT文本中,或者数据库中都是可以的。
接下来将会用几个程序来讲讲是如何爬取的。