好几次因为不同的需要用到网络爬虫,于是到网上看了不少大神的博客,收益匪浅。下面把自己零零散散地学了一点相关的知识整理下来,方便自己和看到这篇博客的你。
Python环境3.5
1.爬虫大概
网络蜘蛛(Web spider)也叫网络爬虫(Web crawler)[1],蚂蚁(ant),自动检索工具(automatic indexer),或者(在FOAF软件概念中)网络疾走(WEB scutter),是一种“自动化浏览网络”的程序,或者说是一种网络机器人。它们被广泛用于互联网搜索引擎或其他类似网站,以获取或更新这些网站的内容和检索方式。它们可以自动采集所有其能够访问到的页面内容,以供搜索引擎做进一步处理(分检整理下载的页面),而使得用户能更快的检索到他们需要的信息。
–引自Wikipedia词条网络蜘蛛
2.初学者
作为初学者,我只想快速实现爬虫,爬虫的量也不大,那么我该怎么开始呢 ?
首先介绍几个比较好的爬虫学习的地方:
知乎:如何入门python爬虫, 对于小白,这永远是个快速寻找和学习知识的好地方
静觅的Python爬虫学习系列教程,也是一个很厉害的博主写的爬虫教程
我主要是通过以上两个地方来学爬虫,当然,遇到问题也会去google,看看[segmentfault]上大家有没有遇到相关的问题。
3.基础知识
我只是掌握一点Python常用知识的小白,然后就匆匆上马爬虫了,下面列出我常用的爬虫或者辅助的python包
- urllib
主要是调用里面的request来递交网页请求的 - bs4
Beautifulsoup是爬虫分析的必备神器 - selenium
可以用来模拟agent对网页操作的包,配上PhantomJS这个无界面的网页浏览器,基本可以对付很多限制爬虫的网站了 - reBeautifulsoup
用来帮助你使用正则表达的包,不过一般的网页的结构化都做的很好,经过Beautifulsoup解析后,基本很少会用到re
当然了,基本的Python能力也是要有的
另外,scrapy这个爬虫框架据说也是大杀器,但基本没用过,以后可以试着用用写一下4.例子
这里,我用几个例子来说明如何去使用这些包做基本的爬虫
先导入urllib.request1import urllib.request
假设我们要访问的网页是:”http://baidu.com“
上述代码实现了对网页的访问、读取、gb2312的转码
然后,我们就可以使用Beautifulsoup来对htmlpage的结构进行解析了,至于一个标准网页的源码的结构是怎样的,建议大家可去W3Cschool去看看
如大家所见,我们很快就把一个网页源码的body部分提取出来了。
然后,我们可以用find_all或者find函数来查找你需要爬的部分,比如“li”,”div”等结构里的内容,具体使用可以参看相关的博客。如果你用的是chrome,你可以在工具一栏里找到开发人员工具,然后找到你要爬的内容的位置。
你可以使用.get()来寻找引用链接’href’,或者’a’之间的内容
总之,你要记住,html语言是一门非常强调结构化的语言,而爬虫的过程需要你尽可能利用它的结构化来减少编程的工作量