1-爬虫基础知识(6节课学会爬虫)

1-爬虫基础知识(6节课学会爬虫)

  • 1.什么是爬虫
  • 2.爬取的数据去哪了
  • 3.需要的软件和环境
  • 4.浏览器的请求
    • (1)Url
    • (2)浏览器请求url地址
    • (3)url地址对应的响应
  • 5.认识HTTP/HTTPS
    • 5.1 http协议之请求
      • (1)请求行
      • (2)请求头
      • (3)请求体
    • 5.2 HTTP协议之响应
      • (1)响应头
      • (2)响应体

1.什么是爬虫

爬虫:通俗的说爬虫就是通过一定的规则策略,自动抓取、下载互联网上网页,在按照某些规则算法对这些网页进行数据抽取、 索引。 像百度、谷歌、今日头条、包括各类新闻站都是通过爬虫来抓取数据。

2.爬取的数据去哪了

呈现:展示在网页上,或者是展示在app上
分析:从数据中寻找一些规律
搜索:微博等是有用户进行内容发布,数据发布的
预测:数据可以进行后续的预测

3.需要的软件和环境

Python3:
(1)基础语法,要有(字符串、列表、字典、判断和循环)
(2)函数(函数的创建和调用)
(3)面向对象(如何创建一个类,如何使用一个类即可)

Pycharm:Python编辑器,Python的官网可以下载
Chrome浏览器:分析网络请求用的,在network有url地址

4.浏览器的请求

在这里插入图片描述

(1)Url

在Chrome中右击检查,点到network
Url-请求的协议+网站的域名+资源路径+参数
后续一旦看到url中出现百分号,进行url解码(在百度搜索在线解码),可以看到文字内容

在Chrome中会出现很多的url地址,有很多额外的url地址的请求,如css和图片等地址
Elements中的内容就是网页的所有内容

(2)浏览器请求url地址

当前url对应的响应+js+css+图片 —》elements中的内容
爬虫请求url对应的响应

Elements的内容和爬虫获取到的url地址的响应不同,需要爬虫以当前url地址对应的响应为准提取数据。而不能以elements为准,elements中的内容不准

在network中的response中可以看到准确的内容-当前的url响应

(3)url地址对应的响应

从network中找到当前的url地址,点击response
在网页右键显示源码,也可以当前url响应

爬虫得到的url响应是不会主动加载js+css等图片的,要以当前url响应为准

有些贴吧会刷新页面,重新显示网页源码,会导致下次内容和之前内容不同,但框架相同,只是填入的数据不同

很多请求是,如数据变化

爬虫模拟请求,可以给人投票

5.认识HTTP/HTTPS

http:超文本传输协议,以明文的形式传输,效率更高,但是不安全
https:HTTP+SSL(安全套接字层), 传输之前先加密,之后解密获取内容,效率较低,但是安全

5.1 http协议之请求

在这里插入图片描述

(1)请求行

协议 url地址,请求协议名及版本号

(2)请求头

host:域名
connection:支持转换成长链接
cache-control:缓存控制
user-agent:(重要)用户代理(身份标识),对方服务器能通过user-agent判断
我们可以在Chrome浏览器模拟手机版发送请求,对应需要将user-agent改成手机版浏览器
Upgrade-insecure-requests:将不安全的http请求转换成https请求
Accept-encoding:接收什么类型的数据
Accept-language:接收什么语言的数据

Cookie:(重要),用来存储用户信息,最终每次请求会被携带上发送给对方服务器
要获取登录后才能访问的页面,对方的服务器会通过cookie判断我们是一个爬虫,为什么对方服务器知道你登录了,下次打开访问网站,要请求

(3)请求体

携带数据
Get请求没有请求体(参数放在url中)
Post请求有请求体(数据放在请求体中,常用于登录注册,传输大文本(携带的数据量很大))

5.2 HTTP协议之响应

(1)响应头

Set-cookie:对方服务器通过该字段可以设置cookie到本地

(2)响应体

Url地址对应的响应

Cookie中重点关注name和value字段,
在这里插入图片描述

后面写爬虫的时候,要用到的基本讲完

在network中重新请求地址就有请求了,这就是抓包(看浏览器发了多少请求)

当我们只用user-agent一个字段无法获取数据时,要考虑是否将其他的字段都带上,一般user-agent和cookie就够了,或者refer等

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何应对UI测试自动化的不稳定循环!

以下为作者观点: 当我加入UI自动化团队时,我很高兴能为新功能的自动化测试用例开发做出贡献。然而,我很快意识到团队花费了大量时间来修复之前迭代中不稳定的测试。这种情况让我感到困惑,因为当自动化测试脚本已知不稳定时&#…

Excel+vue+java实现批量处理功能

需求背景: 产品创建流程比较复杂,有时候需要一次性创建多至10个,所以做了Excel维护产品信息,直接导入创建的功能。能极大提高效率。 简要概括实现: 一、参考单个创建,设计创建模板,表头对应填写字段名&…

《昇思25天学习打卡营第12天 | 昇思MindSpore基于MindSpore的GPT2文本摘要》

12天 本节学习了基于MindSpore的GPT2文本摘要。 1.数据集加载与处理 1.1.数据集加载 1.2.数据预处理 2.模型构建 2.1构建GPT2ForSummarization模型 2.2动态学习率 3.模型训练 4.模型推理

javaScript利用indexOf()查找字符串的某个字符出现的位置

1 创建字符串 2 利用indexof()查询字符串的字符 3 利用while循环判断indexOf是否等于-1,不等于-1就打印一次并且索引号1去查下一个字符 //创建字符串var str1234567812311231;var indexstr.indexOf(1);//查询该字符while(index !-1)//indexOf()没有查到会返回-1{…

【linux/shell案例实战】解决Linux和Windows的换行符CRLF和LF问题

目录 一.什么是Linux 和 Windows 的换行符 CRLF 和 LF 二.使用Linux 中命令 dos2unix 和 unix2dos 实现CRLF 和LF的转换 三.使用 windows 中的代码编辑器实现 CRLF 和 LF 的转换(Notepad) 一.什么是Linux 和 Windows 的换行符 CRLF 和 LF CR是Carria…

探索区块链:颠覆性技术的崛起

目录 一、引言 二、区块链技术概述 三、区块链应用场景 四、区块链面临的挑战 五、区块链的未来展望 六、结语 一、引言 在数字化浪潮的推动下,区块链技术以其独特的去中心化、透明性和不可篡改性等特性,正在逐步改变我们的生活。从金融领域到供应…

vue组件全局注册

描述: vue组件的注册分为局部和全局注册两部分,局部注册相对容易,不做赘述;而不同框架的注册方法又有所不同,下面针对vite框架和vue-cli框架的注册分别进行说明 vue组件全局注册 一、vite框架中全局组件注册二、Vue-cl…

Vue 项目运行时,报错Error: Cannot find module ‘node:path‘

Vue 项目运行时,报错Error: Cannot find module ‘node:path’ internal/modules/cjs/loader.js:883throw err;^Error: Cannot find module node:path Require stack: - D:\nodejs\node_modules\npm\node_modules\node_modules\npm\lib\cli.js - D:\nodejs\node_mo…

C++:enum枚举共用体union

enum枚举 C继承C的枚举用法 (1)典型枚举类型定义,枚举变量定义和使用 (2)枚举类型中的枚举值常量不能和其他外部常量名称冲突: 举例1宏定义,举例2另一个枚举 // 定义一个名为Color的枚举类型 enum Color {RED, // 红色,默认值…

从云原生视角看 AI 原生应用架构的实践

本文核心观点: 基于大模型的 AI 原生应用将越来越多,容器和微服务为代表的云原生技术将加速渗透传统业务。API 是 AI 原生应用的一等公民,并引入了更多流量,催生企业新的生命力和想象空间。AI 原生应用对网关的需求超越了传统的路…

机器人控制系列教程之关节空间运动控制器搭建(1)

机器人位置控制类型 机器人位置控制分为两种类型: 关节空间运动控制—在这种情况下,机器人的位置输入被指定为一组关节角度或位置的向量,这被称为机器人的关节配置,记作q。控制器跟踪一个参考配置,记作 q r e f q_{re…

Windows kubectl终端日志聚合(wsl+ubuntu+cmder+kubetail)

Windows kubectl终端日志聚合 一、kubectl终端日志聚合二、windows安装ubuntu子系统1. 启用wsl支持2. 安装所选的 Linux 分发版 三、ubuntu安装kubetail四、配置cmder五、使用 一、kubectl终端日志聚合 k8s在实际部署时,一般都会采用多pod方式,这种情况下…

MYSQL存储过程的创建

关于存储过程的题目 1、创建存储过程,查看user表中的所有数据 2、创建存储过程avg_order_quantity,返回所有订单的平均工资 3、创建存储过程show_max_bprice,用来查看bookS的单价最贵的价格 4、创建存储过程show_min_bprice,用来查看bookS的单价最低的价格,并将…

【java】【控制台】【javaSE】 初级java家教管理系统控制台命令行程序项目

更多项目点击👆👆👆完整项目成品专栏 【java】【控制台】【javaSE】 初级java家教管理系统控制台命令行程序项目 获取源码方式项目说明:功能点数据库涉及到: 项目文件包含:项目运行环境 :截图其…

【Nginx】源码安装

1.安装地址 Nginx官网:nginx: download 2.下载依赖 //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 3.上传解压编译安装 //解压压缩包tar -xvf nginx-1.26.1.tar.gz //进入nginx cd nginx-1.26.1/ //安装到指定位…

mysql解压版本安装5.7

1. 官网下载好解压版本 我这边5.7版本 https://dev.mysql.com/downloads/file/?id523570 mysql官网 创建 my.ini文件 内容如下 [client] #客户端设置,即客户端默认的连接参数# socket /data/mysqldata/3306/mysql.sock #用于本地连接的socket套接字 # 默…

昇思MindSpore学习笔记5--数据变换Transforms

摘要: 昇思MindSpore的数据变换,包括通用变换Common Transforms、图像变换Vision Transforms、标准化Normalize、文本变换Text Transforms、匿名函数变换Lambda Transforms。 一、数据变换Transforms概念 原始数据需预处理后才能送入神经网络进行训练…

OLMo:真正完全开源的大模型

最近,又有一家机构AI2(Allen Institute for AI)开源了一个LLM:OLMo,它的英文全称就叫Open Language Model。相比之前开源的大模型,OLMo的独特之处是完全开源,除了训练的模型,OLMo还开…

vmware安装debian11

安装vmware16 下载镜像 https://repo.huaweicloud.com/debian-cd/ https://repo.huaweicloud.com/debian-cd/11.7.0/amd64/iso-dvd/ 安装 安装完成之后重启,输入账号密码进入,安装ssh服务器即可使用

记一次elementui时间线的实现

实现效果 点击展开,每次累加五条数据进行展示 实现思路 起始本质上就是一个分页查询,只不过按新的形式展示,然后也不统计总数,每次只展示固定的5条数据点击加载更多,就展示下一页,页的页数进行1&#xff…