Python学习笔记——与爬虫相关的网络知识

1 关于URL

URL(Uniform / Universal Resource Locator):统一资源定位符,用于完整地描述Internet上网页和其他资源的地址的一种标识方法

URL是爬虫的入口,——非常重要

基本格式:

scheme://host[:port# ]/path/.../[?query-string][#anchor]

scheme:协议(例如:http、https、ftp)

host:服务器的IP地址或域名

port#:服务器端口(协议默认端口80,可缺省)

path:访问资源的路径

query-string:发送给http服务器的数据

anchor:锚(转跳到网页的指定锚点位置)

示例:

http://www.baidu.com

http://item.jd.com/11963485.html#product-detail

ftp://192.168.1.118:8081/index

2 HTTP协议、HTTPS协议

2.1 HTTP协议

HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收HTML页面的方法。HTTP协议是一个应用层的协议无连接(每次连接只处理一个请求),无状态(每次连接,传输都是独立的)

2.2 HTTPS协议

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)协议简单讲是HTTP的安全版,在HTTP下加入SSL层。HTTPS = HTTP+SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全

注:

HTTP的端口号为80;HTTPS的端口号为443

3 HTTP Request请求

HTTP请求常用的两种方法:

(1)Get:“获取”,是为了从服务器上获取信息,传输给服务器的数据的过程不够安全,数据大小有限制;

(2)Post:“发送”,向服务器传递数据,传输数据的过程是安全的,大小理论上没有限制;

HTTP其他请求方法:

4 User-Agent 用户代理

http header的User-Agent(简称UA)译为用户代理,是头域的组成部分,是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的UA来判断的。

UA可以进行伪装。也即可以用于伪装爬虫程序

浏览器的UA字串的标准格式:浏览器标识(操作系统标识;加密等级标识;浏览器语言)渲染引擎标识版本信息。但各个浏览器有所不同。

备注:出于兼容及推广等目的,很多浏览器的标识相同,因此浏览器标识并不能说明浏览器的真实版本,真实版本信息在UA字串尾部可以找到。

User-Agent:Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/59.0

可以通过软件 Fiddler 、wireshark等实现网络抓包

关于抓包工具的详细阐述网络抓包wireshark

5 HTTP Response响应的状态码

2、状态码

根据响应结果的类型,大致分为以下几类:

2.1 1XX(信息类)

该类型状态码表示接收到请求并且继续处理。

  • 100,客户端必须继续发出请求。
  • 101,客户端要求服务器根据请求转换HTTP协议版本。

2.2 2XX(响应成功)

该类型状态码表示动作被成功接收、理解和接受。

  • 200,表明该请求被成功地完成,所请求的资源发送到客户端。
  • 201,提示知道新文件的URL。
  • 202,接受并处理,但处理未完成。
  • 203,返回信息不确定或不完整。
  • 204,收到请求,但返回信息为空。
  • 205,服务器完成了请求,用户必须复位当前已经浏览过的文件。
  • 206,服务器已经完成了部分用户的GET请求。

2.3 3XX(重定向类)

该类型状态码表示为了完成指定的动作,必须接受进一步处理。

  • 300,请求的资源可在多处获得。
  • 301,本网页被永久性转移到另一个URL。
  • 302,请求的网页被重定向到新的地址。
  • 303,建议用户访问其他URL或访问方式。
  • 304,自从上次请求后,请求的网页未修改过。
  • 305,请求的资源必须从服务器指定的地址获得。
  • 306,前一版本HTTP中使用的代码,现已不再使用。
  • 307,声明请求的资源临时性删除。

2.4 4XX(客户端错误类)

该类型状态码表示请求包含错误语法或不能正确执行。

  • 400,客户端请求有语法错误。
  • 401,请求未经授权。
  • 402,保留有效ChargeTo头响应。
  • 403,禁止访问,服务器收到请求,但拒绝提供服务。
  • 404,可连接服务器,但服务器无法取得所请求的网页,请求资源不存在。
  • 405,用户在Request-Line字段定义的方法不被允许。
  • 406,根据用户发送的Accept,请求资源不可访问。
  • 407,类似401,用户必须首先在代理服务器上取得授权。
  • 408,客户端没有在用户指定的时间内完成请求。
  • 409,对当前资源状态,请求不能完成。
  • 410,服务器上不再有此资源。
  • 411,服务器拒绝用户定义的Content-Length属性请求。
  • 412,一个或多个请求头字段在当前请求中错误。
  • 413,请求的资源大于服务器允许的大小。
  • 414,请求的资源URL长于服务器允许的长度。
  • 415,请求资源不支持请求项目格式。
  • 416,请求中包含Range请求头字段,在当前请求资源范围内没有range指示值。
  • 417,服务器不满足请求Expect头字段指定的期望值。

2.5 5XX(服务器错误类)

该类型状态码表示服务器或网关错误。

  • 500,服务器错误。
  • 501,服务器不支持请求的功能。
  • 502,网关错误。
  • 503,无法获得服务。
  • 504,网关超时。
  • 505,不支持的http版本。

3、响应头

是对响应的一种限定,包含很多属性。常用的属性有:

  • Location,实现请求重定向。
  • Server,服务器的基本信息。
  • Content-Encoding,服务器发送数据时使用的压缩格式。
  • Content-Language,发送的数据所用的语言。
  • Content-Type,所发送的数据的类型。
  • Content-Length,发送数据的大小。
  • Set-Cookie,把cookie发送到客户端。
  • Last-Modified,指示资源的最后修改日期和时间。

原文地址:https://www.cnblogs.com/gengyi/p/9033931.html

时间: 2024-12-11 13:39:03

Python学习笔记——与爬虫相关的网络知识的相关文章

python学习笔记之爬虫之爬取百度贴吧某一帖子

从大神这儿静觅 ? Python爬虫实战二之爬取百度贴吧帖子讲的很不错,按照步骤一步一步的做效果很明显.第一次真正做出一个小爬虫程序,所以在csdn写出来也是对自己的一种鞭策一种鼓励,不喜勿喷,还请大神不吝赐教. 因为大神博文讲的很详细(真心详细),所以步骤我就不一一细说了 先把自己的代码贴出来(大部分一样): #!/usr/bin/env python # coding=utf-8 import urllib2 import urllib import re class Tool(object

python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序

1.有道的翻译 网页:www.youdao.com Fig1 Fig2 Fig3 Fig4 再次点击"自动翻译"->选中'Network'->选中'第一项',如下: Fig5 然后显示出如下内容,红框画出的部分是等会编写代码需要的地方: Fig6 Fig7 再看看翻译的结果: Fig8 2.python实现英译汉: 原理:把需要翻译的内容输入给有道词典,然后通过程序把翻译的结果爬下来. 1 # -*- coding:utf-8 -*- 2 """

python学习笔记(十一):网络编程

一.python操作网络,也就是打开一个网站,或者请求一个http接口,使用urllib模块. urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块. import json from urllib import request from urllib import parse pay_url = 'http://szz.nnzhp.cn/pay' balance_url = 'h

Python学习笔记之爬虫1

 爬虫的操作步骤: 爬虫三步走 爬虫第一步:使用requests获得数据: 1.导入requests 2.使用requests.get获取网页源码 import requests r = requests.get('https://book.douban.com/subject/1084336/comments/').text 爬虫第二步:使用BeautifulSoup4解析数据: 1.导入bs4 2.解析网页数据 3.寻找数据 4.for循环打印 from bs4 import Beautif

python学习笔记(十八)网络编程中好用的模块介绍

上篇博客中我们使用python自带的urllib模块去请求一个网站,或者接口,但是urllib模块太麻烦了,传参数的话,都得是bytes类型,返回数据也是bytes类型,还得解码,想直接把返回结果拿出来使用的话,还得用json,发get请求和post请求,也不通,使用比较麻烦,还有一个比较方便的模块,比urllib模块方便很多,就是requests模块,它使用比较方便,需要安装,pip install requests即可,下面是requests模块的实例 #1.发get请求 url = 'ht

CCNA学习笔记(一)--初识网络知识

在这里主要是多谢  闫辉.红茶三杯二位大神的无私奉献!!!  CCNA(Cisco Certified Network Associate)这个只是cisco的基础,不过我们有空时还是要去认识它下,免得到时用到时,一头迷糊!!别的不多说,直接奔主题吧. 这章我们主要了解的内容有: 1.网络基础: A.首先我们来认识下网络中使用的相关设备图标. 由上图我们知道CISCO中要使用到的设备名了,但这些只是在图纸上面显示吧了,现实是其实不是这样的.所以有机会一定还是要使用真机来操作. 下图为真机 B.什

Day3: Python学习笔记之计算机基础——网络片

Day3: Python学习笔记之计算机基础--网络片 什么是互联网协议以及为何要有互联网协议? ?互联网协议本质上是为了方便连接两台计算机而指定的一系列统一的标准. osi五层模型 计算机之间要实现数据传输必须要经过以下五层协议: ? 模型 ,协议 ,硬件 ? 应用层, http协议.用户自定义协议 ? 传输层, TCP/UPD协议 ,四层交换机.四层路由器 ? 网络层, IP协议, 三层交换机.路由器 ? 数据链路层, 以太网.电信号分组, 网桥.以太网交换机.网卡 ? 物理层, 传递电信号

python学习笔记目录

人生苦短,我学python学习笔记目录:week1 python入门 week2 python基础week3 python进阶week4 python高阶week5 python数据结构与算法week6 网络编程week7 数据库技术之入门week8 数据库技术之MySQL和redis和mongodbweek9 前端技术之HTML和CSSweek10 前端技术之JavaScript和DOMweek11 前端框架之jQueryweek12 前端框架之bootstrapweek13 网络框架之入门w

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho