请稍侯

python爬虫获取豆瓣电影——准备工作

10 May 2015

1 什么是爬虫

  爬虫的英文叫Spider,这个名字还是蛮恰当的,把你的程序比作一个虫子在互联网上爬,每爬一个页面都会存储下来。在抓取网页内容的过程当中,不断从当前页面上抽取新的url作为新的入口,直到满足一定的条件之后停止,这个过程类似于图的遍历。搜索引擎就是一个功能强大的爬虫,它爬取互联网上所有的信息。而对于具体功能的爬虫来说,只是需要从指定的页面中去获取希望获取的信息,比如说从豆瓣电影上获取所有电影的相关信息、从大众点评上获取某个地方的所有商铺的信息等等。在这几篇文章中我会介绍我在爬取豆瓣电影上所有电影相关信息并存储到本地的过程中使用的一些工具以及相关的思路。思路还在不断的改进中,也希望看到的朋友如果有什么更好的建议可以留言给我,毕竟这个脚本还是too naive了。
  这篇文章主要是一些预备知识的介绍,包括浏览页面的过程以及相关一些库的使用。

2 浏览器浏览页面发生了什么

  stackoverflow上有个稍微详细一点的回答

1 浏览器检查缓存;如果请求在缓存中,跳至9;  
2 浏览器询问操作系统需要访问的服务器的ip;  
3 操作系统通过DNS查找需要访问网站的ip并返回给浏览器;  
4 浏览器与服务器之间建立TCP连接;  
5 浏览器通过TCP连接向服务器提交HTTP请求;  
6 浏览器接收到服务器发送过来的HTTP响应,TCP连接可能会被关闭或者被下次请求继续使用;    
7 浏览器检查返回的响应是否被重定向(返回的状态码为3XX),授权请求(401)、错误(4XX和5XX)等等,这些响应的处理与正常响应的处理不一样(2XX);  
8 如果可以缓存的话,响应会被存储到缓存中;   
9 浏览器将响应进行解码(比如说如果响应可能是使用gzip压缩的);  
10 浏览器决定如何处理响应(比如说这是一个HTML页面、图像或者音频等等);  
11 浏览器对响应进行渲染,或者对未识别类型的响应提高下载选项。  

  简单的来说,就是(1)浏览器通过url找到需要访问的服务器的ip,向服务器提交一个请求;(2)服务器对这个请求进行响应,浏览器将响应进行解析渲染向用户进行展示。这个听起来蛮简单的过程(实际上巨复杂)也就是我们编程时的步骤。在下面一节中会介绍如何使用一些库来实现这个过程。
  我们所需要的做的就是通过python来模拟浏览器向需要访问的服务器提交请求并从返回的响应中获取我们需要的信息。如果你准备好了,开始阅读下一节吧。