菜鸟都能看懂的爬虫Scrapy入门指南

爬虫,就是抓取网络数据的小脚本,把访问资源,获取数据,入库保存这一过程自动化的工具。“挂机神器”按键精灵,“抢课神器”Selenium都可以是很好的爬虫工具,想必大家对这两者已经是比较熟悉了。但是在生产工作中,大部分情况下,使用前述两种工具虽然能获取数据,但是对于服务器资源的开销比较大,且效率通常达不到要求。究其原因,这两个工具在获得相应数据之后还需要渲染展示,这个环节会造成额外的资源开销。因此,提高数据抓取的效率还需要返璞归真,回到最初的原点,把原始的请求响应拿来研究一下。HTTP请求

在浏览器中输入链接并回车,就能看到展示的网页了,那我们先来瞅一眼输入的URL:

网页数据的请求和访问在应用层通常是基于HTTP(HypertextTransferProtocol,超文本传输协议),那HTTP协议是怎样封装传输的数据呢?

一个HTTP请求分为起始行,头部字段和请求体三个部分。其中,起始行包含了该请求的基本信息:请求方法,请求资源路径和请求协议/版本,是构建一个请求最基本和重要的;其次是若干行的头部字段(HEADERS),包含了该请求的描述信息,例如Cookies,Encoding和User-Agent等;最后是请求体部分,其中有具体的请求参数等信息。一般来说,常用的请求方法有GET和POST两种,其中GET方法的请求参数信息通过键值对的形式被存放在URL中,在资源路径之后通过“?”开始以key=value的方式,键值对之间用“”隔开。因此GET方法是没有请求体内容的。相对而言,POST请求的请求参数是按照访问接口要求以一定的组织方式放在请求体中,所以POST请求通常是有请求体内容的。看完请求我们来看看请求的响应。一个HTTP请求的响应也分为三个部分:状态行,头部字段和响应体。和HTTP请求一样,状态行也包含了该响应的描述信息,包括传输协议/版本,响应状态码和状态短语,一般成功的请求会得到“OK”的状态;响应头中往往包含解读响应体内容的信息,例如Encoding,Content-Type和Set-Cookie等的信息,有些信息对于数据抓取的整个流程是非常关键的;响应的内容全部都在响应体中以一定的结构呈现,常见的数据格式有HTML和JSON。Python中的HTTP了解完了HTTP协议,下面就来尝试着用Python发送一个HTTP请求。一般我们会使用requests模块(GitHub:


转载请注明:http://www.aierlanlan.com/rzdk/918.html