Scrapy 基础知识笔记(一)
(参考书籍《Python网络爬虫框架Scrapy从入门到精通》)
一、Scrapy
Scrapy应用领域丰富,在数据分析与挖掘方面具有重要价值;它能够支持从网络异常攻击者角度进行威胁分析;同时具备强大的数据库管理和自动化测试流程设计能力
Scrapy基于Twisted异步网络框架实现网络通信处理功能,并显著提升了数据传输效率;该系统无需自行构建异步框架体系,并集成了丰富多样的中间件组件;通过灵活配置可快速应对多种应用场景
3. Scrapy可以在网站上并行执行16个请求。
二、爬虫
爬虫的定义:爬虫是一种能够模拟人类向网站发送请求并获取网页内容的程序。它能够自动向网站发送请求,并同时抓取网页内容;接着利用特定规则筛选出有价值的信息。
爬虫的应用场景包括通用搜索平台、推荐系统以及数据集等关键领域;涉及数据分析工具与价格比较网站等技术应用;同时支持舆情监测平台等复杂应用场景
三、 爬虫必备的前端知识(一)
1. HTTP
HTTP的工作原理:HTTP是以客户端/服务器模式为基础,并且是连接导向的技术。它不仅定义了Web客户端如何从Web服务器发起请求获取网页内容,并且也说明了服务器如何将获取到的网页内容传递给客户端。
HTTP采用了基于请求/响应的通信模式。客户端通过发送一个请求向服务器发起通信。每个请求包含以下要素:请求方法(如GET或POST)、URL路径(用于定位资源)、协议版本号以及相关的头部信息和正文数据。服务器返回状态信息作为响应。具体来说,响应内容包含了协议版本号(HTTP 1.1或更高)、成功状态或错误状态代码(例如200表示成功或404表示未找到)、服务器相关信息以及附加的头信息和正文数据。
HTTP请求/处理的处理步骤:
应用程序与Web服务器之间通过TCP/IP协议进行通信:HTTP/1.1协议中的HTTP客户端(通常指浏览器)会通过TCP协议与Web服务器的HTTP端口(默认为80)建立一个稳定的网络数据传输通道。
Web客户端向Web服务器提交HTTP request。
通过TCP协议建立连接。
Web客户端将基于文本的一份请求数据提交给Web服务器。
该服务端将解析并响应相应的HTTP状态码。
The request header consists of four components: request line, header field, empty line, and data segment.
Web服务器接收客户端的请求数据,并返回相应文件作为响应:Web服务器解析客户端发送的请求信息,并确定所需资源位置。Web服务器将资源副本传输至TCP通道,并让客户端端接收。一个响应头由状态行、响应头部、空行和响应数据四个组成部分构成
当客户端与Web服务器完成通信连接时
客户端程序首先解析状态行部分以确认请求的成功状态码;接着解析每一个响应头字段并提取响应正文内容,并将其解码为HTML格式;最后按照HTML语法规则对其进行结构化处理并在当前网页浏览窗口中展示
2. HTTP的请求方法
GET请求方法:采用GET请求方法时,在URL后添加请求参数及其对应值,并以一个'?'符号标识URL结尾并开始附加参数;具体而言,在HTTP响应头中设置一个状态码200表示成功返回资源,并在响应体中包含相应的资源数据;各个查询项之间通过 '& ' 符号分隔开来以增强可读性;通常情况下, GET方法支持的最大查询项数量为1024个键值对,这一限制有助于防止因过载查询而引发性能问题
该方法采用POST方式进行处理时,会将用户提供的参数打包放置于HTTP请求的数据部分,并且这种数据形式通常由键/值对的形式表示。此方法通常应用于表单信息提交以及文件上传场景。
3. HTTP状态码
(1) 1xx:信息性状态码,表示接收的请求正在处理
(2) 2xx:成功状态码,表示请求已被成功地接收并处理
(3) 3xx:重定向状态码,表示需要进行附加操作才能完成请求
(4) 4xx:客户端错误状态码,请求表示有语法错误或请求无法实现
(5) 5xx:服务器错误状态码,表示服务器在处理请求的过程中发生了错误
常见的HTTP的状态码
①200:客户端请求成功
②301表示永久性重定向;意味着请求目标已指向新URL;以后应当使用该资源当前指向的URL
③303:该状态码表明请求对应的资源包含另一个URL,并建议采用GET方法来定向获取这些资源。
④400:服务器未能理解请求
⑤403:对被请求网页的访问被禁止
⑥404:服务器无法找到被请求的页面
⑦500:服务器发生不可预期的错误,即内部服务器错误
⑧503错误码显示时提示用户请求未成功完成。当服务器出现短暂超载或完全崩溃的情况时会导致客户端请求无法及时响应。系统会在一定时间内恢复并重新处理相关请求
4. HTML、CSS和JavaScript
5. DOM的概念和操作
DOM用树结构描述了HTML文档中标签的相互关联性
DOM操作:
①获取节点:通过class属性的类名获取元素,返回元素对象数组
通过id属性的id值获取元素,返回一个元素对象
通过name属性获取元素,返回元素对象数组
通过标签名获取元素,返回元素对象数组
②更新节点:更新DOM节点的内容
③添加新节点:在DOM节点下新增一个子节点
④遍历节点:遍历DOM节点下的子节点
⑤删除节点:将该节点从HTML中删除,同时该节点下的节点也会一并删除。
