Web Spider_1

网络爬虫入门教程(1)

刚入门网络爬虫,期望通过三篇博客来总结一下入门级爬虫程序的写法,希望能给那些想要入爬虫这个坑的人提供一些帮助。为了结构化的介绍爬虫,将分为:http协议、网络爬虫代码构建、内容提取三篇博客进行全面的讲解。

注:写爬虫要遵守相关法规,不能侵犯他人著作权!!!(简单的来说免费的网站都能爬,付费的很难爬也不能以此盈利,否则有前车之鉴,千万赔偿劝退)

http协议

下面先列出以下http协议的特性,但与爬虫关系不大,仅作了解(想要详细了解http,参见这篇博客):

  1. http协议是明文传送非加密的,即是不安全的

  2. http协议是无状态的,这并不是只连接(TCP)无状态,而是指服务器不会记录前一次访问的信息,通俗的讲就是:

    浏览器:服务器,你欠我一百万

    服务器:好,我给你一百万

    浏览器:服务器,你还是欠我一百万

    服务器:(傻傻的)给你一百万….

    也就是说,即使浏览器发起N多个相同的请求,服务器都会响应

  3. http协议连接不上持续的,即每次连接只处理一个请求,处理完就关闭连接,下一个请求会新建一个连接而不是保持前一个连接继续处理。

http的内容(重点)

一个完整的http协议由请求行、请求头、空行、请求体四部分组成,下图是一个示例:

mark

请求行:请求方法+URL+http版本号
  • 请求方法常见的有:
    • get(最多):向服务器请求某个资源,get会把数据(参数)拼接在URL中,在浏览器地址栏中可见,一般为?key=value&key=value……的形式如https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1,因此get的安全性较低
    • post:用于向服务器提交数据,常见的场合为用户登录、注册等,post传输数据在请求体中,对用户不可见,安全性相对较高
    • 其他还有(仅作了解,很少碰到):
      • OPTIONS - 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*’的请求来测试服务器的功能性。
      • HEAD- 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。该方法常用于测试超链接的有效性,是否可以访问,以及最近是否更新。
      • PUT - 向指定资源位置上传其最新内容。
        DELETE - 请求服务器删除Request-URI所标识的资源。
      • TRACE- 回显服务器收到的请求,主要用于测试或诊断。
      • CONNECT - HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
      • PATCH - 用来将局部修改应用于某一资源,添加于规范RFC5789。
请求头:有多个部分,下面列出常见的
  • Accept:指定客户端能够接收的内容
  • Accept-Language:指定客户端能够接受的语言
  • Accept-Ecoding:指定客户端能够接受的编码类型
  • User-Agent:用户代理,向服务器说明自己的操作系统、浏览器等信息
  • Connection:是否开启持久连接(keepalive)
  • Host: 服务器域名
  • Cookie:最重要的请求头之一, 将cookie的值发送给HTTP服务器。
  • Content-Length:表示请求消息正文的长度。例如:Content-Length: 38。
请求体:请求的正文,内容不一,也可空

http的响应

HTTP响应由三部分组成:状态行、响应头、响应正文;

状态行:包括协议版本Version、状态码Status Code、回应短语;

响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;

响应正文:就是响应的具体数据。

下面是一个示例

mark

其中常见的状态码有:

​ 200—-OK/请求已经正常处理完毕

​ 301—-/请求永久重定向

​ 302—-/请求临时重定向

​ 304—-/请求被重定向到客户端本地缓存

​ 400—-/客户端请求存在语法错误

​ 401—-/客户端请求没有经过授权

​ 403—-/客户端的请求被服务器拒绝,一般为客户端没有访问权限

​ 404—-/客户端请求的URL在服务端不存在

​ 500—-/服务端永久错误

​ 503—-/服务端发生临时错误


想要编写爬虫程序就一定要对http协议有所了解,这篇博客只是大概地讲述了http协议,对于简单的爬虫程序已然够用,如果想深入的了解http协议,请移步下列博客

https://segmentfault.com/a/1190000015969377

https://blog.csdn.net/aliujiujiang/article/details/81088317

文章目录
  1. 1. 网络爬虫入门教程(1)
    1. 1.1. http协议
      1. 1.1.0.1. http的内容(重点)
        1. 1.1.0.1.1. 请求行:请求方法+URL+http版本号
        2. 1.1.0.1.2. 请求头:有多个部分,下面列出常见的
        3. 1.1.0.1.3. 请求体:请求的正文,内容不一,也可空
      2. 1.1.0.2. http的响应