爬虫概述

news/2024/5/17 10:02:36

一、什么是爬虫

爬虫(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、端口号
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

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.gwqt.cn/news/28494.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

idea在类和接口上面自动生成注释

详细教程:https://www.cnblogs.com/ya-qiang/p/9462766.html 1、 File >> Settings… >> Editor >> File and Code Templates /*** @Auther: Zxd* @Date: ${YEAR}/${MONTH}/${DAY} ${TIME}* @Description:*/

程序员天天 CURD,怎么才能成长,职业发展的思考 ?

前言 关于程序员成长的话题,我前面写过一篇文章 - 程序员天天CURD,职业生涯怎么发展的思考。 现在回头看,对程序员这个职业发展的认识以及怎么发展还是有一些局限性。有一句话是这么说的:人的成长就是不断认为以前的自己是一个“傻逼”的过程。这句话用词很激烈但成长也许就…

从零开始:Django项目的创建与配置指南

title: 从零开始:Django项目的创建与配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories:后端开发tags:Django WebDev Python ORM Security Deployment OptimizationDjango简介: Django是一个开源的高级Python Web框架,由法国人Guido Zempe于2003年创…

db.create_all() 报错上下文?flask_sqlalchemy创建数据库找不到上下文?

问题报错: RuntimeError: Working outside of application context.This typically means that you attempted to use functionality that needed the current application. To solve this, set up an application context with app.app_context(). See the documentation for…

csrf-基于Pikachu的学习

CSRF-跨站请求伪造 CSRF的原理 CSRF攻击即Cross-site request forgery,跨站请求伪造,直白来说就是恶意网站伪装成用户,向被害网站发起操作请求。用户输入账号信息请求登录A网站。 A网站验证用户信息,通过验证后返回给用户一个cookie 在未退出网站A之前,在同一浏览器中请求…

使用LinkAI创建AI智能体,并快速接入到微信/企微/公众号/钉钉/飞书..

LinkAI 作为企业级一站式AI Agent 智能体搭建与接入平台,可以使用LinkAI创建专属智能体,并将它连接到并快速接入到微信/企微/公众号/钉钉/飞书/web等​ LinkAI 作为企业级一站式AI Agent 智能体搭建与接入平台,不仅为用户和客户提供能够快速搭建具备行业知识和个性化设定的 …

基于CodeMirror开发在线编辑器时遇到的问题及解决方案

需求:实现json在线编辑并支持校验,基于此使用了 CodeMirror在线编辑,jsonlint校验输入数据 // package.json:"dependencies": {"codemirror": "^5.53.2","core-js": "^3.8.3","jsonlint": "^1.6.3",…