爬虫概述

一、什么是爬虫

爬虫(Crawler)是一种按照既定规则,在网络上自动爬取信息的程序或脚本。也称为网际网路蜘蛛(Internet Spider)或网络机器人(Web Robot)。爬虫可以自动抓取网络信息,主要用于网站数据采集、内容监测等。

二、爬虫能做什么

1、搜索引擎

搜索引擎利用爬虫发现网络上的页面,并建立索引,以提供搜索服务

2、数据采集

可以使用爬虫从网站上采集结构化的数据,例如天气预报、房价、商品价格等。这些数据可以用于分析。

3、网站检测

通过爬虫可以监测网站的运行状态、内容更新频率等,及时发现问题

4、舆情分析

使用爬虫技术可以采集相关的数据,进行产品、政策等方面的舆情分析。

5、自动化测试

6、做一些脱离手动的操作(帮人投票,12306投票,微信聊天助手-itchat)

三、数据能做什么

1、聚合产品

新闻网站,早期的今日头条

2、搜索引擎

百度、谷歌

3、数据分析、人工智能的源数据

4、特定领域的数据服务

二手车估价、天气预报、团购、去哪儿网

四、爬虫工作原理

爬虫的工作流程一般可以分为四步:
1. 确定几个初始URL作为入口
2. 发送请求下载对应的网页
3. 分析网页内容,提取需要的信息
4. 提取出页面中的链接作为新的URL
然后继续循环执行上述流程,直到满足结束条件。

五、爬虫类型

根据爬取的目标范围,爬虫可以分为两类:
1. 通用爬虫:爬取范围广泛,目标是发现网络上的所有信息,例如搜索引擎中的百度爬虫和谷歌爬虫。
2. 聚焦爬虫:爬取范围具体且清晰,以获取特定领域的信息,例如价格比较网站的产品价格爬虫。

六、爬虫工作流程详解

(一)确定初始URL
爬虫需要确定一个或多个初始URL作为入口。初始URL可以手动提供,也可以存储在数据库或其他文件中读取。
(二)下载网页
利用请求模块向初始URL发送请求,并下载对应的网页,通常会将页面内容以HTML格式保存。
(三)解析网页内容
根据网页元素的位置、属性等信息,使用解析模块提取出所需的数据。例如文章标题、发布时间、正文等。
(四)提取链接获取新URL
解析网页的同时,爬虫会提取出页面中的链接,作为后续待爬取的新URL。
重复上述流程,直到满足结束条件,例如爬取网页数达到预定量。

七、爬虫策略

(一)遵守robots协议
robots协议定义了爬虫的访问频率等规则,爬虫需要遵守以避免过多占用服务器资源。
(二)限定爬取频率
在robots协议基础上,进一步合理限定爬取频率,减轻服务器压力。
(三)设置随机等待时间
让爬虫程序在发送请求之间等待一定随机时间,降低对服务器的负载。

(四)使用缓存和判重机制
使用缓存已经爬取过得页面,并设定判重机制,避免重复爬取
(五)采用用户代理
模拟浏览器的请求头和用户代理信息,避免被拒绝访问。

八、学号爬虫需要了解的知识

1、计算机网络(http/https协议,tcp/ip协议,socket编程)
2、前端基础
3、正则表达式
4、数据存储技术(分布式存储)(nosql)
5、并发处理技术(多进程、多线程、线程池、协程)
6、图像识别(处理反爬、验证码),机器学习算法(验证码、数据解析)

九、爬虫中需要解决的问题

1、爬虫的采集和更新策略
2、解决反爬
3、数据解析
4、数据存储
5、模拟登陆(验证码识别)
6、爬虫的监控和部署
7、数据的去重(url去重、内容去重)

十、如何正确看待爬虫

1、爬虫不应该毫无节制
2、robots协议
3、法律问题
4、爬虫不能抓取页面上看不到的数据,是为了防止重复工作

5、目标网站会乖乖让我们随便爬取数据吗?-反爬

disallow是不允许爬虫的目录

allow是允许爬虫的目录

慕课网robots协议

十一、计算机网络相关知识

协议相关看网络部分。

一个完整的网络请求过程

网络爬虫的基本原理,网络爬虫是捜索引擎抓取系统的重要组成部分。爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份。

网络请求过程

发起请求:通过 URL 向服务器发起 Request 请求(同打开浏览器,输入网址浏览网页),请求可以包含额外的 headers、cookies、proxies、data 等信息,Python 提供了许多库,帮助我们实现这个流程,完成 HTTP 请求操作,如 urllib、requests 等;
获取响应内容:如果服务器正常响应,会接收到 Response,Response 即为我们所请求的网页内容,包含 HTML(网页源代码),JSON 数据或者二进制的数据(视频、音频、图片)等;
解析内容:接收到响应内容后,需要对其进行解析,提取数据内容,如果是 HTML(网页源代码),则可以使用网页解析器进行解析,如正则表达式(re)、Beautiful Soup、pyquery、lxml 等;如果是 JSON 数据,则可以转换成 JSON 对象进行解析;如果是二进制的数据,则可以保存到文件进行进一步处理;
保存数据:可以保存到本地文件(txt、json、csv 等),或者保存到数据库(MySQL,Redis,MongoDB 等),也可以保存至远程服务器,如借助 SFTP 进行操作等。

IP地址和Url

IP地址

IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

如果看自己本机地址,windows上使用ipconfig

URL

URL(网址)是Uniform Resource Locator的简写,统一资源定位符。每个URL指向一个独特的资源,可以是一个html页面、一个CSS文档、一个图片、文件、JS文件等。URL由以下几部分组成:

1、协议的类型。如:https
2、主机名称/域名。如:baike.baidu.com
3、端口号80
4、查找路径。如:865?
5、查询参数(为?后所有内容)。如:fromtitle=%E8%80%81%E8%99%8E&fromid=65781,采用键值对形式,多个键值对用&隔开
6、锚点,前端用来做面定位的。现在一些前后端分离项目,也用锚点来做导航
前端定位:https://baike. baidu.com/item/*E5488%98%E8%8BKA5%E8%88%B1#2
锚点导航:动的是#之后的内容,根据错点去请求数据 https://music.163.com/#/friend

协议://主机地址:端口号/可选【路径 + 参数 + 锚点】

protocol协议 定义因特网服务的类型。最常见的类型是 http。以前用的是HTTP协议,而后应为不安全,就该用https协议,安全的通道。有的网站没有HTTPS证书:由于此网站没有证书,因此信息(如密码或信用卡)不会安全地发送到此网站,并且可能被其他人截获或看到。
host域名 定义域主机(http 的默认主机是 www)。一个URL中,也可以使用IP地址作为域名使用。
domain 定义因特网域名,比如 runoob.com
:port端口 定义服务器上的路径(如果省略,则文档必须位于网站的根目录中)。从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。
filename文件名

定义文档/资源的名称。从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名。

从“#”开始到最后,都是锚部分。锚部分也不是一个URL必须的部分。
参数 从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

 

 url格式:https://baike.baidu.com/item/%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E5%AE%9A%E4%BD%8D%E7%B3%BB%E7%BB%9F/5937042?fromtitle=URL&fromid=110640&fr=aladdin

七层网络协议

五层网络以及对应协议

五层网络以及对应的设备,客户端与服务器间数据传输

如何使用网络协议

集线器、路由器、操作系统已经实现了协议,只需要进行接口调用即可

接口就是socket编程,服务器开发一般只需要接触socket编程即可

TCP/IP协议

IP地址是IP协议提供的一种统一的地址格式,IP地址是逻辑地址,也就是逻辑层面的,可以修改变化。不同于mac地址,mac地址是不变的,无法变更。

IP协议用于将多个数据包交换网络连接起来,它在源地址和目的地址之间传输数据包。IP协议负责将数据"片段"贴上标签,成为数据包,标签包括"源IP地址"和"目标IP地址"。这些标签将决定数据传输的路径。IP协议负责传送的道路,被称为"路由功能"。

TCP(传输控制协议)是一种面向连接、可靠的、基于字节流的传输层协议。tcp协议负责把需要传输的数据分解成一定长度的"片段"。TCP是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接“,其实是客户端和服务器的内存里保存一份关于对方的信息,如ip地址、端口号等。TCP可以看成一种字节流,它会处理IP层或以下的丢包、重复以及错误问题。在连接的建立过程中,双方需要交换一些连接的参数。这些参数可以放在TCP头部。TCP提供一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接。采用4次挥手来关闭一个连接。

路由器是连接互联网各局域网、广域网的设备,他会根据信道的情况自动选择和设置路由,以最佳路径,按前后顺序发送数据。每个节点上的路由器都记录着与自己相邻的路由器地址,并形成一个表格-路由表,路由表是一个动态数据库,并在网络活动中不断更新。数据包达到一个路由器后,该路由器会根据数据包的地址信息,查询路由表,然后选择一个最佳的路径发送数据包。

posted @   leagueandlegends  阅读(162)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示