爬虫基础spider 之(一) --- 初识爬虫

爬虫概念

(spider,网络蜘蛛)通过互联网上一个个的网络节点,进行数据的提取、整合以及存储。从而获取我们想要的部分

robots协议

robots协议不是技术层面的协议,只是一个君子协定;

首先在爬取一个网站的时候,第一步就是访问这个网站的robots.txt文件,在这个文件中规定了那些东西能爬哪些东西不能爬,

爬虫要严格遵守,只爬取允许的内容,不要去爬取不允许的内容,搜索引擎爬虫一定遵守robots协议;我们写的话可以不遵守。

聚焦爬虫

根据客户的需求,定制一些针对性比较强的爬虫

工作原理:

发起请求
通过HTTP库向目标站点发起一个Request请求,请求可以包含额外的header等信息,等待服务器响应

获取响应内容
如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型

解析内容
得到的内容:可能是HTML,可以用正则表达式,页面解析库进行解析,

      可能是Json,可以直接转换为Json对象解析,

      可能是二进制数据,可以做保存或者进一步的处理

保存数据
保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件


1、数据提取(抓取)

  技术:http协议等应用层协议

  反爬:用户代理、IP禁止、验证码、会话处理等

2、数据的分析

  遇到的数据:html、json、xml、js数据

  反爬:js动态加载、js加密、后台加密等

3、数据的存储

  CSV数据、json数据、关系型数据库、非关系型数据库

Request请求 和 Respon响应

浏览器发送消息给网址所在的服务器,这个过程就叫做HTPP Request

服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,

做相应的处理,然后把消息回传给浏览器,这个过程就是HTTP Response

浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后展示

Request中包含什么 

请求方式

 主要有:GET/POST两种类型常用,另外还有HEAD/PUT/DELETE/OPTIONS

  GET:   向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,

      例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问

  POST: 向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。

      数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。


   HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。

      它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

   PUT:向指定资源位置上传其最新内容。 

   OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。

     用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

   DELETE:请求服务器删除Request-URI所标识的资源。

请求URL

URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,

是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL的格式由三个部分组成:
  第一部分是协议(或称为服务方式)。
  第二部分是存有该资源的主机IP地址(有时也包括端口号)。
  第三部分是主机资源的具体地址,如目录和文件名等。

爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据。

请求头

包含请求时的头部信息,如User-Agent,Host,Cookies等信息,

请求体

请求是携带的数据,如提交表单数据时候的表单数据(POST) 

Response中包含了什么

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

响应状态

有多种响应状态,如:200代表成功,301跳转,404找不到页面,502服务器错误 

  • 1xx消息——请求已被服务器接收,继续处理
  • 2xx成功——请求已成功被服务器接收、理解、并接受
  • 3xx重定向——需要后续操作才能完成这一请求
  • 4xx请求错误——请求含有词法错误或者无法被执行
  • 5xx服务器错误——服务器在处理某个正确请求时发生错误
  • 常见代码:
    • 200 OK 请求成功
    • 301 目标永久性转移 
    • 302 目标暂时性转移
    • 400 Bad Request 客户端请求有语法错误,不能被服务器所理解
    • 401 Unauthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
    • 403 Forbidden 服务器收到请求,但是拒绝提供服务
    • 404 Not Found 请求资源不存在,eg:输入了错误的URL
    • 500 Internal Server Error 服务器发生不可预期的错误
    • 503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

响应头

如内容类型,类型的长度,服务器信息,设置Cookie,

响应体

最主要的部分,包含请求资源的内容,如网页HTMl,图片,二进制数据等


 

什么是HTTP协议

 1)是一个基于请求与响应的应用层协议,底层协议是TCP保证了整个传输过程的可靠性

 2)通过url来进行客户端与服务器的交互(url解释:统一资源定位符,用于定位互联网上资源的位置,

   格式,协议://主机名.域名:端口号/路径名...?参数1=值1&参数2=值2&....#锚点)

 3)是一种C/S(B/S是一种特殊的C/S结构)模式的协议,客户端发起请求,服务端处理请求并响应

 4)它是一种无状态的协议,它通过cookie或者session来处理会话信息

http的过程

1)创建TCP链接:三次握手,

  客户端首先向服务器发出一个是否同意创建连接的请求,

  然后服务根据自己的任务量决定是否创建,并且把是否创建连接的相关信号返回给客户端,

  然后客户端如果接到了同意创建连接的信号,就正式的发起一个创建连接的信号,并且带上http协议的报文。

      通过三次握手客户端和服务器之间建立齐了一条数据通路,就可以保证HTTP协议的可靠传输

2)客户端向服务器发起HTTP请求:通过url把参数以及请求头信息传递给服务器,常见的请求方式有4中,常用的是get和post

  请求头:包含了本次请求的相关配置信息(比如:主机、cookie、数据格式等),决定了客户端和服务之间数据交流的方式与格式

  请求体:就是参数,也即是客户端要想服务器提交的数据

3)服务器处理请求,并且把数据响应出去

4)判断数据是否传输结束,如果结束,四次挥手断开TCP链接

get请求和post请求的区别

get请求参数拼接在url后面的,post请求参数不体现在url中(一般直接通过表单提交);

get请求数据量有限制(不同的浏览器对url的长度都有不同的限制),post请求是没有限制的


 

状态码 

 1 100:继续 客户端应当继续发送请求。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。
 2 
 3 101:转换协议 在发送完这个响应最后的空行后,服务器将会切换到在Upgrade 消息头中定义的那些协议。只有在切换新的协议更有好处的时候才应该采取类似措施。
 4 
 5 102:继续处理 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
 6 
 7 200:请求成功 处理方式:获得响应的内容,进行处理
 8 
 9 201:请求完成,结果是创建了新资源。新创建资源的URI可在响应的实体中得到 处理方式:爬虫中不会遇到
10 
11 202:请求被接受,但处理尚未完成 处理方式:阻塞等待
12 
13 204:服务器端已经实现了请求,但是没有返回新的信 息。如果客户是用户代理,则无须为此更新自身的文档视图。 处理方式:丢弃
14 
15 300:该状态码不被HTTP/1.0的应用程序直接使用, 只是作为3XX类型回应的默认解释。存在多个可用的被请求资源。 处理方式:若程序中能够处理,则进行进一步处理,如果程序中不能处理,则丢弃
16 301:请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源 处理方式:重定向到分配的URL
17 
18 302:请求到的资源在一个不同的URL处临时保存 处理方式:重定向到临时的URL
19 
20 304:请求的资源未更新 处理方式:丢弃,使用本地缓存文件
21 
22 400:非法请求 处理方式:丢弃
23 
24 401:未授权 处理方式:丢弃
25 
26 403:禁止 处理方式:丢弃
27 
28 404:没有找到 处理方式:丢弃
29 
30 500:服务器内部错误 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现。
31 
32 501:服务器无法识别 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
33 
34 502:错误网关 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
35 
36 503:服务出错 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。

 

转载于:https://www.cnblogs.com/TMMM/p/10821578.html

网络爬虫 - scrapy入门(十三) scrapy入门知识 阅读详情

相关推荐

Python-网络爬虫

网络爬虫(Web Spider)又称网络蜘蛛或网络机器人,是一段用来实现自动采集网站数据的程序。网络爬虫不仅能够为搜索引擎采集网络信息,而且还可以作为定向信息采集器,定向采集某些网站中的特定信息。对于定向信息的爬取,网络爬虫主要采取数据抓取、数据解析、数据入库的操作流程。(1)数据抓取:发送构造的HTTP请求,获得包含所需数据的HTTP响应;(2)数据解析:对HTTP响应的原始数据进行分析、清洗,以提取出所需要的数据;(3)数据入库:将数据进一步保存到数据库(或文本文件)中,用于构建知识库。

qq_42759120的博客 1758

爬虫入门教程-Spider

URL那么多,如何判断哪些网址已经爬过,哪些没有爬过,简单点就是是使用字典结构来存储已经爬过的的URL,但是如果碰过海量的URL时,字典占用的内存空间非常大,此时你需要考虑使用 Bloom Filter(布隆过滤器),用一个线程逐个地爬取数据,效率低得可怜,如果提高爬虫效率,是使用多线程,多进程还是协程,还是分布式操作。网上的爬虫教程多如牛毛,原理大体相同,只不过是换个不同的网站进行爬取,你可以跟着网上的教程学习模拟登录一个网站,模拟打卡之类的,爬个豆瓣的电影、书籍之类的。一般分为传统爬虫和聚焦爬虫。

D0126_的博客 1023

网络爬虫调研

    上学期为师姐做的网络爬虫方面的调研。 网络爬虫调研报告基本原理Spider概述 Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能遵循 http协议检索 Web文档的软件都称之为网络爬虫。 Spider是一个功能很强的自动提取网页的程序 ,它为搜索

caohao2008的专栏 4516

scrapy 报错401

新人学scrapy,最近在爬金华信义居的房屋信息新房 - 列表,楼盘详细信息都很顺利的爬取成功了,但抓楼盘单元就报401的错,抓破脑袋不知道咋搞! 百度了说是401 是需要验证用户信息,但具体应该怎么操作呢??? 贴上代码 import datetime import json import pandas as pd import scrapy from jinhua.items import HouseItem class ProjectSpider(scrapy.Spider): n

qq_35521546的博客 725

【spider】爬虫学习路线-精通Scrapy网络爬虫

博客已经搬家到“捕获完成”: https://www.v2python.com 随着大数据时代的到来,人们对数据资源的需求越来越多,而爬虫是一种很好的自动采集数据的手段。 那么,如何才能精通Python网络爬虫呢?学习Python网络爬虫的路线应该如何进行呢?韦玮老师在此为大家具体进行介绍。 1、选择一款合适的编程语言 事实上,Python、PHP、JAVA等常见的语言都可以用于编...

捕获完成 2571

网络爬虫(Spider)Java实现原理

 “网络蜘蛛”或者说“网络爬虫”,是一种能访问网站并跟踪链接的程序,通过它,可快速地画出一个网站所包含的网页地图信息。本文主要讲述如何使用Java编程来构建一个“蜘蛛”,我们会先以一个可复用的蜘蛛类包装一个基本的“蜘蛛”,并在示例程序中演示如何创建一个特定的“蜘蛛”来扫描相关网站并找出死链接。Java语言在此非常适合构建一个“蜘蛛”程序,其内建了对HTTP协议的支持,通过它可以传输大部分的网页信息

小傻 1万+

初识爬虫(spider)

​爬虫可分为两大类:通用网络爬虫、聚焦网络爬虫。通用网络爬虫:是搜索引擎的重要组成部分,百度搜索引擎,其实可以更形象地称之为百度蜘蛛(Baiduspider),它每天会在海量的互联网信息中爬取信息,并进行收录。当用户通过百度检索关键词时,百度首先会对用户输入的关键词进行分析,然后从收录的网页中找出相关的网页,并按照排名规则对网页进行排序,最后将排序后的结果呈现给用户。通用网络爬虫需要遵守robots协议,网站通过此协议告诉搜索引擎哪些页面可以抓取,哪些页面不允许抓取。

xuan_kong的博客 2319

Python网络爬虫库:simple_spider快速入门指南

在现代数据驱动的世界中,网络爬虫已成为自动化信息采集的重要工具。Python库simple_spider应运而生,提供了一个简单易用的接口,让开发者能够快速构建定制化的网络爬虫。这个章节旨在为读者揭开simple_spider的神秘面纱,介绍它的特点以及如何将它应用于实际的网络数据采集任务中。网络爬虫,又称网络蜘蛛(Web Spider)、网络机器人(Web Robot)或网页追逐者(Web Crawler),是一种自动化浏览互联网并收集特定信息的程序。

weixin_29301059的博客 981

python爬虫从入门到放弃(二)之爬虫的原理

在上文中我们说了:爬虫就是请求网站并提取数据的自动化程序。其中请求,提取,自动化是爬虫的关键!下面我们分析爬虫的基本流程 爬虫的基本流程 发起请求通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应 获取响应内容如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,J...

weixin_34200628的博客 1614

网络爬虫项目实战 - “spider“

网络爬虫技术是一种自动化获取网络数据的手段,它能够模拟人类的行为,访问网页并从中提取所需信息。随着大数据和人工智能技术的兴起,网络爬虫成为了获取训练数据和进行市场分析的重要工具。它不仅能够帮助我们抓取结构化数据用于研究和分析,还能够监控网站的变化,甚至成为搜索引擎索引网页的基础。本章将从网络爬虫的概念开始,逐步探讨它的定义、作用以及工作流程和核心组件。我们将为读者提供一个全局的视角,理解网络爬虫的运作机制以及其在现代互联网中的角色。

weixin_32869687的博客 1771

Windows下玩转DeepSeek-R1:Ollama+Docker配置RAGFlow的3种网络调试方案

本文详细介绍了在Windows环境下使用Ollama和Docker配置RAGFlow的三种网络调试方案,帮助开发者解决本地部署AI知识库系统时的网络隔离问题。通过host.docker.internal直连、自定义Docker网桥网络和端口映射与反向代理三种方法,实现DeepSeek-R1模型与RAGFlow的高效通信,提升本地AI应用的开发效率。

weixin_28347369的博客 247

什么是网络爬虫(Spider) 程序

Spider又叫WebCrawler或者Robot,是一个沿着链接漫游Web 文档集合的程序。它一般驻留在服务器上,通过给定的一些URL,利用HTTP等标准协议读取相应文档,然后以文档中包括的所有未访问过的URL作为新的起点,继续进行漫游,直到没有满足条件的新URL为止。WebCrawler的主要功能是自动从Internet上的各Web 站点抓取Web文档并从该Web文档中提取一些信息来描述该We...

weixin_34354945的博客 204

飞牛NAS+Docker打造私人IPTV直播源:手把手教你部署iptv-api

本文详细介绍了如何在飞牛NAS上通过Docker部署iptv-api,打造私人IPTV直播源。从SSH配置到Docker容器部署,手把手教你实现自动更新直播源、多终端支持的解决方案,适用于Kodi、PotPlayer等播放器,提升家庭娱乐体验。

earth的博客 5584

爬虫学习 | 02 认识爬虫spider

网络爬虫(Web Crawler),也被称为网页蜘蛛(Spider)、网页机器人(Robot)或爬虫(Crawler),是一种自动浏览互联网的程序。它的主要任务是按照一定的算法扫描和访问网页,从互联网上下载网页内容,然后智能地解析和提取网页中的信息。

m0_74113296的博客 2083

【DRAM存储器六十一】LPDDR5介绍--LPDDR5/5X/4/4X IO结构

简述LPDDR5/5X/4/4X IO结构及等效电路下的VREF理论值计算

highman110的博客 482

2026年职业院校技能大赛中职移动应用与开发—数字生活APP原型设计参考答案(含素材)

本模块以产品原型为目标,考查参赛选手熟练收集、分析和归纳客户需求,清晰梳理业务流程,熟练使用UI设计软件进行产品UI/UE设计,掌握正确的UI配色方案,设计出符合业务逻辑的人体工学移动App 原型优秀作品。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 568

python基础及网络爬虫

Python爬虫学习第一课,了解何为爬虫,python基础语法了解

记录学习路上的一些拙见 2867

【libnice】meson + vs2022,生成win32工程

libnice

突围 947

Spider:面向AI和LLM的高效网络爬虫工具

超快的爬取速度:能够在几秒钟内处理20,000个页面成本效益高:相比其他爬虫服务,价格更加实惠专为AI优化:提供LLM友好的数据格式强大的功能:支持代理轮换、自定义头部、反反爬虫等高级特性Spider允许你通过paramsparams={"limit": 100, # 限制爬取的页面数"respect_robots_txt": True, # 遵守robots.txt规则"delay": 1000 # 每次请求之间的延迟(毫秒)有关所有可用参数的详细信息,请参阅Spider官方文档。

ppoojjj的博客 2294

华为OD机试真题 新系统【查找能被整除的最大整数】

华为OD新系统机试真题【查找能被整除的最大整数】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【查找能被整除的最大整数】

qq_45776114的博客 672

麻辣香锅病毒分析

Spicy Hot Pot浏览器劫持病毒(麻辣香锅病毒)从2020年初被安全公司监测到,因其病毒模块带有MLXG_KM被安全行业代称麻辣香锅病毒。目前通过各种激活工具传播, 包括暴风激活、小马激活和KMS激活等诸多工具,疑似与下载站进行合作推广此类激活工具。Spicy Hot Pot 是一个浏览器劫持 Rootkit,它会将用户的主页更改为指向恶意软件操作员控制的页面,此外还会将内存转储从机器上传到预定义的服务器,并结合本地更新功能以确保其保持更新。通常浏览器劫持者会通过更改用户主页的恶意可执行文件或注册表

不忘初心,护天下安全! 4788

初识网络爬虫

网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

个人学习笔记库,一篇一篇记录成长的足迹 2123

ZYNQ Petalinux编译系统启动文件实战指南

本文提出的混合编译加速方案实测可将编译时间从45分钟缩短至18分钟,QSPI双启动方案已在工业控制领域成功应用。Xilinx官方UG1144文档(最新v2023.1版)正点原子《ZYNQ嵌入式开发实战》开源项目Meta-Petalinux(GitHub趋势项目)未来展望:随着Versal平台的普及,Petalinux将支持更多AI加速器原生驱动,值得持续关注。

QQ_778132974的博客 812

初识网络爬虫框架Scrapy

我们仍然是先用cd命令,从前面的项目路径,进入到scrapy项目里的Spider文件夹里,再通过运行scrapy genspider spidername domainname命令来创建一个新的Spider爬虫文件。2、在Spider部分:在爬虫文件里,我们向start_urls数组放入要爬取的url连接,框架就会经过引擎、调度器、下载器等一系列操作,再会返回一个response结果回到Spider的解析函数里,我们只需要对返回结果进行数据解析,解析完成的数据通过实体类传向管道。

weixin_44067776的博客 2231

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

python网络爬虫(web spider)系统化整理总结(一):入门

接触爬虫很久了,一直没有个系统的理解和整理,近来假日无事,总结一下。 -------------------------------------------以下是目录--------------------------------------------------------- 一、爬虫概述及分类 二、爬虫的应用场景 三、爬虫的一般执行过程 四、爬虫技术常用的知识 五、反爬虫 --...

the blog of alunSemiconductor 4794

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: 数据分析 之(一) --- 环境搭建
下一篇: 爬虫基础urllib 之(二) --- urllib基础
baoding4359
博客等级 码龄11年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值