1.入门基础**
虽然是入门集成但需要具有一定的计算机网络的基础。
1.1HTTP原理**
因为爬虫是跟浏览器打交道的,了解HTTP的一些原理对我们后续学习爬虫非常有帮助。
1.1.1URI和URL**
URI是统一资源标志符,URL是统一资源定位符。言简意赅,URL是URI的子集,一个URL必是URI,但URI中不止包URL,还有一个类是URN(统一资源名称)它负责资源命名但不能定位到资源,例如在生活中的网名,我们只知道对方网名并不能通过这个网名找到这个人。
在使用上,URL和URI使用较多,URN使用较少我们可以笼统的把一般的网页链接称为URL或者URI。
URL的拼写具有一定的规则:
scheme://[username:password@]hostname[:port][/path][;parameters][?query][#fragment]
scheme:协议,也称protocol,http,https等。必要部分。
username,password:用户名和密码。非必要
hostname:主机地址,必要。
port:端口,因为使用协议时会有默认端口所以不是必要部分。
path:路径。非必要
parameters:参数。非必要
query:查询。非必要
fragment:片段。一是单页面路由,一些前端框架可以借助它来做路由管理,另一个是HTML锚点,页面自动滚动到某个特定位置。非必要
1.1.2HTPP和HTTPS
这二者的发展历史我就不多赘述,主要说一下http的请求过程。这个请求过程是浏览器先向服务器发送请求,服务器接收请求并进行处理和解析,然后返回对应的响应。该响应包含了源代码的内容,浏览器接收到会解析。
1.2 WEB网页基础
1.2.1网页组成
现在网页主要分为三大部分-HTML,CSS和JavaScripy。
#HTML
HTML是用来描述网页的语言,一般将他作为网页的基本架构,通过不同类型标签来表示不同的元素。不同的标签布局一般通过div嵌套组合而成。通过不同的排版与嵌套最终形成网页的框架。
#CSS
CSS即层叠样式表。在HTML中,只需要用link标签来引入写好的CSS文件,页面就会变得美观,优雅。
#JavaScript
JavaScript,是一种脚本语言。单纯CSS和HTML组合使用,只能赋予页面静态效果,现在网页上的动态效果基本都是使用JavaScript,它提供了一种实时,动态,交互的功能。一般在HTML通过script标签引入。
##1.3爬虫的基本原理
现在的互联网好比一个蜘蛛网,爬虫便是在其上面爬行的蜘蛛。当蜘蛛爬到一个节点处相当于访问了一个页面,网页之间的链接关系让爬虫可以通过一个节点继续爬行到下一个节点,当整个网页全部被访问网站数据就抓取下来了。
1.3.1爬虫概述
爬虫简单理解就是一个获取网页数据保存数据的自动化程序,主要有下面几个步骤:
1.获取源码
对于如何获取源码python提供了非常的的手段。如用urllib,requests对网页进行请求操作,我们只需解析返回响应的body部分。
2.提取信息
爬取到源码之后,需要对源码进行分析并从中提取目标数据。 通用的办法是正则,但正则过程复杂容易出错。基于上面介绍的网页结果,我们利用一些库来对网页经行信息提取如Beautiful Soup,pyquery,lxml等。
3.保存数据
对提取到的数据可以保存在数据库或者json文本等中。
1.4 Session和Cookie
如同我们上飞机需要验证机票身份证一样,现在大多数网页都需要登录才能查看,而登录的这个动作就像我们上飞机得需要飞机票才能上去,而在网页中的飞机票功能就是Session和Cookie共同配合的。
1.4.1无状态HTTP
在介绍Session和Cookie之前,我们要了解一个东西HTTP的无状态,即HTTP协议对事物处理是没有记忆的。简单来说就是服务器在处理请求和响应的这个过程他是不会记录这前后状态的变化,当你需要前面处理前面的数据时就只能重传,这样子非常繁琐,直到出现了Session和Cookie用与保持连接,Session保存在服务器中,Cookie在客服端,每次访问客服端都会带上它并发送给服务器。服务器通过Cookie来确定状态。在爬虫中我们会将登录成功后的Cookie放在请求头里。
1.4.2 Session
Session,是指有始有终的一系列动作,例如视频通话,从发起通话到挂断之间的过程就称为一个Session。
在Web中,Session主要用来存储用户Session所需的各种信息,这样当用户在页面之间跳转,存储在Session对象中的变量不会丢失,会一直保存下去。如果用户没有Sessiom,服务器会自动创建。当Session过期或者被放弃才会终止掉该Session。
1.4.3 Cookie
主要鉴别用户身份,进行Session跟踪而存储在用户本地终端的数据。
1.4.3.1Session维持
客服端第一次请求服务器,服务器会返回一个带有Set-Cookie响应头,这个就是用来标记用户,客服端就会保存起来,当下一次请求时就会带上这个Cookie,服务器收到这个Cookie会根据里面的SessionID找到相应的Session,通过找到的Session来查看用户状态,如果有效则处于登录状态,如果无效或者过期,就不能继续访问网页。具体的Cookie属性可以通过浏览器的F12打开开发者工具,点击应用程序或者Application,点击Cookie就能看到具体的属性。
1.4.4关于一些小问题
1.持久化Cookie本质就是把Cookie的有效时间和Session有效期设置的比较长。
2.我们关闭浏览器并不是等同把Session消除了,之前说的Cookie会携带id信息,如果你把之前存的Cookie保留在本地并改写请求头就又可以找到之前的Session,也正是因为这样子服务器才会设置一个Session生效时间。
这本书在第一章还介绍了代理和多线程和多进程对我来说不是很必要记如果感兴趣可以看书或者网上看看资料整体上不难只是一些基本概念
python3网络爬虫开发实战笔记-第一章
于 2024-05-30 14:40:12 首次发布