阳泉推广型网站建设,河间专业做网站电话,成都网站建设外包公司排名,网站多语言一.HTTP基本原理(一)URI和URLURI的全称为统一资源标志符#xff0c;URL的全称为统一资源定位符。用来指定一个资源的访问方式#xff0c;包括访问协议#xff0c;访问路径和资源名称,从而找到需要的资源(网页的内容都是按照一定层次保存到网站系统的后台数据库或者文件夹内)…一.HTTP基本原理(一)URI和URL URI的全称为统一资源标志符URL的全称为统一资源定位符。用来指定一个资源的访问方式包括访问协议访问路径和资源名称,从而找到需要的资源(网页的内容都是按照一定层次保存到网站系统的后台数据库或者文件夹内)。 其实URL是URI的子集URI的另一个子类叫做URN全称为统一资源名称。但在现在的互联网中URN用得非常少我们可以把URI看作URL。(二)超文本 网页源代码由一些标签构成浏览器解析了这些标签后就会形成我们平常看到的网页网页的源代码HTML就称作为超文本。(三)HTTP和HTTPS URL的开头有http或https是访问资源需要的协议类型。 HTTP的全称为超文本传输协议是用于从网络传输超文本数据到本地浏览器的传送协议。目前广泛使用的是HTTP1.1版本。 而HTTPS是以安全为目标的HTTP通道是HTTP的安全版它的安全基础是SSL就是HTTP下加入SSL层。传输的内容通过SSL加密保证了数据传输的安全。而且每个用HTTPS的url后面都有一个锁头标志可以查看网站认证之后的真实信息也可以通过CA(电子认证服务)下发的安全证书查询。 在访问谷歌的时候对于一些不安全的未被加密的网址会对其进行高亮显示此网站不安全。 在访问12306网站的时候大家可能会发现也是会被提示不安全因为这个网站的证书是铁道部自行颁发的并没有被ca机构信任。但是他仍旧是SSL认证的如果要爬取这样的站点就需要设置忽略证书选项。(四)HTTP请求过程 我们在浏览器中输入一个URL回车后就会观察到页面内容。其实就是我们用浏览器向网站所在的服务器发送了一个请求网站的服务器接收到这个请求后进行处理和解析然后再返回对应的响应之后传给浏览器浏览器再对其进行解析把网页内容呈现出来。 可以用网页的审查元素打开开发者模式下的Network监听组件里面可以得到访问当前请求网页时发生的所有网络请求和响应我们打开淘宝首页查看一下其中各列的意义如下|列名| 含义 |-------|-------|Name|请求的名称一般是URL的最后一部分内容|| Status|响应的状态码 200表示正常。||Type| 请求的文档类型document表示一个HTML文档||Initiator|请求源用来标记请求是那个对象或进程发起的||Size|从服务器下载的文件和资源的大小如果是从缓存中获取数据这回显示from cache||Time|发起请求到获取响应所用的总时间||Waterfall|网络请求的可视化瀑布流|当我们点击任意一个过程时就会看到更详细的内容 这里General中Request URL为请求的URLRequest Method为请求的方法Status Code为响应的状态码。Remote Address为远程服务器的地址和端口Referrer Policy为Referrer辨别策略。 我们继续向下看可以看到有Response Headers和Requests Headers分别表示响应头和请求头请求头就是我们发送请求的信息伴随着General中的URL,请求方法进行请求。浏览器接收到响应时会解析响应内容进而呈现网页内容。(五)请求1.请求方法 常见有两种分别为GET和POST。GET请求可以加一些参数POST请求大多数在处理表单提交时发起。且POST请求的数据常以字典表单的形式发起会出现在请求体中不会出现在URL中。还有一些其他的请求方法但不太常见这里就不说明了。 POST请求更安全数据不会直接包含在url中会只包含在请求体中。且GET请求提交的数据最多只有1024个字节。 当登录时需要提交密码用GET方法就会直接暴露在url中,就会造成信息泄露最好用POST方法。而且上传文件的时候由于文件内容比较大选择POST方法比较好。 还有一些其他的不常见的方法这里就不介绍了。2.请求的网址请求的网址URL统一资源定位符定位我们想请求的资源。3.请求头 请求的信息用于告诉服务器我们的请求让服务器返回我们需要的信息。常见的有CookieRefererHostUser-Agent。大家可以查看维基百科的说明维基百科请求头说明常用的几个的含义如下| 常用请求头信息 |含义 ||--|--||Accept|请求报文域指定客户端可以接受的类型信息||Accept-Language|指定客户端可以接受的语言类型||Accept-Encoding|指定客户端可以接受的内容编码|| Cookie|服务器通过 (Set- Cookie )发送的一个 超文本传输协议是网站用于辨别用户进行会话跟踪而存储在客户端本地的数据 || Referer| 表示浏览器所访问的前一个页面正是那个页面上的某个链接将浏览器带到了当前所请求的这个页面||Host|服务器的域名ip(用于虚拟主机 )以及服务器所监听的传输控制协议端口号。||User-Agent|浏览器的浏览器身份标识字符串包括客户端的操作系统浏览器的版本等信息||Content-Type|互联网媒体类型表示具体请求中的媒体类型信息如text/html表示HTML格式image/gif表示GIF图片application/json代表JSON类型| 请求头是请求的重要组成部分要构建好。4.请求体 用于进行POST请求而设置的是一个数据表单。在GET请求中为空。在请求头中Content-Type为请求体的多媒体类型。指定Content-Type为application/x-www-form-urlencoded才会以表单数据的形式提交设置为application/json会以JSON数据提交或者是multipart/form-data以表单文件进行提交text/xml以XML数据提交。如果要提交表单要说明Content-Type是哪种类型的数据否则会出错。(六)响应1.响应状态码 服务器的响应状态200表示正常其他常见的有403表示禁止访问404表示页面未找到500表示服务器内部错误等。2.响应头 显示了相应的一些基本信息。有需要时可以查询。3.响应体 就是响应的主体请求网页时时Html代码请求多媒体时是二进制文件。可以用content输出二进制文件可以通过响应头的Content-Type查看返回的数据类型是什么。 这里主要的响应体是网页的源代码以及JSON数据。二.爬虫的基本原理 爬虫是获取网页并提取和保存信息的自动化程序。(一)获取网页技术 用urllibrequests等类库实现HTTP请求。获取网页源代码或者json数据。(二)提取信息 万能方法正则表达式但是正则比较复杂且容易出错其他方法有用Beautiful Souppyquerylxml等提取网页节点的属性或文本值。(三)保存数据 可以简单保存为TXT文本CSV文本或JSON文本也可以保存到数据库如MySQL和MongoDB等或者保存到远程服务器利用网络编程与SFTP(安全文件传送协议)进行操作。(四)能爬的数据 网页源码JSON格式的API接口数据二进制多媒体数据基本上网上的信息在robot协议下的数据都能爬还有移动互联网下APP的数据。 这里要注意一定要遵守网络爬虫robot协议否则就是盗取别人的数据。(五)JavaScript动态渲染页面的数据 现在当我们爬取网页源码时会发现与我们用审查元素查看的页面不同。这是因为现在越来越多的网页采用Ajax前端模块化工具CSS与JS等动态构建网页我们得到的只是一个空壳。当我们用urlllib与requests等库请求页面时只是得到网页的Html源码因此这时候就会用到动态抓取技术来进行动态提取网页内容。 我们可以分析其后台Ajax接口或者使用SeleniumSplash等第三方登台抓取库或者自己写一个库(如果学成高手的话)来模拟JS渲染。三.会话和Cookies 在很多情况下我们都可以发现好多网页需要登录后才可以访问有的可以在访问某个网站的很多页面时都可以不用重新登录还会很长时间保存有的却需要每次关闭网页后下次重新输入登录信息。这种技术就涉及到会话(Session)和Cookies了。(一)无状态HTTP 这个意思指的是HTTP协议对事务处理是没有记忆功能的每次我们发一个请求到获得响应服务器缺乏一个用户记录而且等待下次我们再进行登录时又要重新传入登录信息。这不仅仅会浪费时间还会浪费资源。 随着互联网技术的发展出现了两种用于保持HTTP连接状态的技术分别是会话和Cookies会话在服务端就是网站的服务器用于保存用户的会话信息Cookies在客户端就会让网页在下次访问时自动附带上做为请求的一部分发送给服务器服务器通过识别Cookies并鉴别出是哪个用户然后再判断用户是否是登录状态返回对应的响应。(二).会话 就是有始有终的一系列动作/消息。在网页web中会话对象用来存储特定用户会话所需的属性及配置信息这样在访问网页时这个会话保存的内容不会消失。如果用户还没有会话则服务器将自动创建一个会话对象。当会话过期或放弃后服务端将停止该会话。(三).Cookies 指某些网站为了辨别用户身份进行会话跟踪而存储在用户本地终端上的数据。 可以在浏览器开发者工具的Application选项卡中的Storage查看cookies信息。由Max Age或Expires字段决定了过期的时间。基本上现在都是把Cookies保存在客户端的硬盘上当检测到会话有很长时间没有访问时才会删除来节省内存。四.代理IP 有时候服务器会检测某个代理IP在单位时间的请求次数如果过于频繁不像人类就会拒绝服务称之为封IP。代理说白了就是用别人的IP进行访问进行IP伪装。优点(1)突破自身IP的访问限制。(2)访问一些单位或团体的内部资源。(3)提高访问速度。(4)隐藏自身IP。(一)使用网上的免费代理这种方式是免费的但是不太稳定还需要维护一个代理池。(二)使用付费代理服务付费的肯定比免费的要好一些。(三)ADSL拨号拨一次号换一次IP稳定性高。最后小编想说我是一名python开发工程师整理了一套最新的python系统学习教程想要这些资料的可以关注私信小编“01”即可希望能对你有所帮助。