Python爬虫入门01:在Chrome浏览器轻松抓包


文章目录

    • 爬虫基本概念
      • 爬虫定义
      • 爬虫工作原理
      • 爬虫流程
      • 爬虫类型
      • 爬虫面临的挑战
    • 使用Chrome浏览器抓包
      • 查看网页HTML代码
      • 查看HTTP请求
      • 请求头(Request Header)
      • 服务器响应
      • 抓包的意义

爬虫基本概念

爬虫定义

爬虫(Web Crawler 或 Spider)是一种自动浏览互联网的程序,它按照一定的算法顺序访问网页,并从中提取信息。爬虫的基本任务是抓取网页内容,这些内容可以是文本、图片、视频等。爬虫在互联网上的应用非常广泛,包括搜索引擎的数据收集、市场研究、数据挖掘等。
在这里插入图片描述

爬虫工作原理

  1. 起始URL:爬虫从一组初始URL开始,这些URL可以是手动指定的种子URL,也可以是自动生成的。
  2. 下载网页:爬虫访问URL,下载对应的网页内容。
  3. 解析内容:爬虫解析下载的网页,提取有用的信息,如文本、链接等。
  4. 提取链接:从解析的内容中提取新的URL,这些URL将作为爬虫下一步访问的对象。
  5. 重复过程:对提取的链接重复下载和解析的过程,直到满足特定条件(如爬取的页面数量、时间限制等)。

爬虫流程

  1. 目标确定:明确爬虫需要抓取的数据类型和范围。
  2. 网站分析:分析目标网站的结构,了解网页的布局和数据的组织方式。
  3. 请求发起:根据分析结果,构造合适的HTTP请求,包括GET或POST请求,以及必要的请求头信息。
  4. 数据获取:服务器响应请求后,爬虫接收数据,这些数据可能是HTML、JSON、XML等格式。
  5. 数据解析:使用正则表达式、BeautifulSoup、lxml等工具,从获取的数据中提取有用的信息。
  6. 数据存储:将解析出的数据存储到数据库或文件中,以便进一步的分析和使用。
  7. 遵守规则:在爬虫的设计和运行过程中,遵守网站的robots.txt协议,尊重版权和隐私政策。

在这里插入图片描述

爬虫类型

  • 通用爬虫:广泛用于搜索引擎,如Google、Baidu,它们抓取互联网上大量的网页。
  • 聚焦爬虫:专注于特定主题或领域的内容,只抓取与特定主题相关的网页。
  • 增量式网络爬虫:增量爬虫,主要是指我们在周期性的爬取一些网站的时候,只是仅仅爬取网站变更的内容,而不是把所有网站数据重新爬取一遍。这样,可以有效的降低运维成本。
  • 深层网络爬虫:深层网络爬虫,主要是指我们不能直接爬取的一些网站。比如,这些网站需要用户登陆,或者填写一些特定的表单,才能继续深入爬取信息。

爬虫面临的挑战

  • 动态内容:现代网页大量使用JavaScript动态生成内容,爬虫需要处理这些动态加载的数据。
  • 反爬机制:许多网站有反爬虫策略,如IP封锁、请求频率限制等。
  • 数据质量:从网页上抓取的数据可能包含噪声,需要进一步清洗和验证。

使用Chrome浏览器抓包

  • 推荐使用Chrome浏览器,避免使用可能存在后门的国产浏览器。
  • 打开Chrome,输入网址(如www.baidu.com),按下F12打开开发者工具。也有些电脑单点f12不管用,那就需要用上Fn+F12的操作了,然后可以看到弹出了一个像下面这样子的界面,那就是了。
    在这里插入图片描述

查看网页HTML代码

  • 在Element标签下查看和修改网页的HTML代码。这个玩意正是我们想要的,可以看到,Element 标签下对应的 HTML 代码,其实就是这个网页的代码,我们可以在这里除了看看它的代码之外,我们还可以修改一些东西,比如我把这个按钮改成世界和平。首先点击左下角的小按钮,然后把我们的鼠标移动到百度一下那里,哎再右键选择编辑属性。ok,我们也算掌握了百度前端的人了(开玩笑)。
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

查看HTTP请求

  • 点击Network标签,刷新页面查看HTTP请求。这里咱是中文的,就点击长得像wifi那个符号就好了。

  • 在这里插入图片描述

  • 常见请求方式:GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE。

  • GET请求:参数在URL中,如https://www.baidu.com/s?wd=查询内容

  • POST请求:参数在请求体中,常用于信息提交如注册、登录。

HTTP请求是客户端(如浏览器)与服务器之间通信的基础。在进行网页爬取时,了解和分析HTTP请求是至关重要的。以下是对HTTP请求的进一步扩展:

  • HTTP请求方法:不同的请求方法决定了客户端与服务器交互的方式。

    • GET:请求指定的资源。参数附加在URL后面,适用于请求数据且不引起服务器状态变化的场景。
    • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。参数包含在请求体中,适用于引起服务器状态变化的操作。
    • PUT:更新服务器上的现有资源或新建资源。
    • DELETE:删除指定的资源。
    • HEAD:请求获取与GET请求相同的响应,但没有响应体,用于获取响应头信息。
    • OPTIONS:请求查询服务器支持的通信协议或请求方法。
    • TRACE:请求服务器回送收到的请求信息,用于测试或诊断。
  • 查看HTTP请求的步骤

    1. 打开浏览器的开发者工具(通常通过按F12或右键点击页面元素选择“检查”)。
    2. 点击“Network”(网络)标签。
    3. 刷新页面,观察和分析发出的所有请求。
    4. 点击具体的请求,查看详细信息,包括请求头、请求体、响应头和响应体。
  • GET请求详解

    • GET请求的参数通过URL传递,格式通常为key1=value1&key2=value2
    • 例如,在百度搜索框输入“查询内容”,浏览器会构造如下GET请求:
      https://www.baidu.com/s?wd=查询内容&其它参数
      
    • GET请求的URL长度有限制,且参数直接暴露在URL中,不适合传输敏感信息。
    • 我们来具体尝试一下,比如输入爬虫,我们能看到很多的请求,我峨嵋你再随便点一个看看,在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      这里我们会发现这个get的用法其实就相当于我们在 Python 写 GET 请求的时候
      直接在 URL 后面加个 ?然后添加参数值就好了,不信的话可以复制去试一下,弹出来的界面和在输入框输入“爬虫”是一样的。
https://www.baidu.com/s?ie=utf-8&csq=1&pstg=22&mod=2&isbd=1&cqid=8f6a4386003a1144&istc=1238&ver=0Q6tTQUEQuHajerqoqPYyO9Y2bJzZC7NC9m&chk=66a4eac6&isid=470ACB913FC52189&wd=%E7%88%AC%E8%99%AB&rsv_spt=1&rsv_iqid=0xf1e9644100cf032b&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=ib&rsv_sug3=8&rsv_sug1=7&rsv_sug7=100&_ck=64387.0.-1.-1.-1.-1.-1&rsv_isid=60360_60468_60492_60500_60520&isctg=5&rsv_stat=-2&rsv_sug7=100
  • POST请求详解
    • POST请求的数据不在URL中,而是通过HTTP请求体发送。
    • 常用于表单提交,如注册、登录等,可以传输大量数据。
    • 例如,登录表单可能包含用户名和密码,POST请求的示例如下:
      POST /login HTTP/1.1
      Host: example.com
      Content-Type: application/x-www-form-urlencodedusername=xiaoshuaib&password=加密后的密码
      当我们点击登录的时候,就开始将我们的账号密码请求给百度服务器,可以看到我们请求了 login 这个接口
      在这里插入图片描述

请求方法就是 POST

  • POST请求可以携带复杂的数据格式,如JSON或XML。

  • 请求头(Request Headers)

    • 包含了HTTP请求的元数据,如Accept(客户端可接受的数据类型)、Content-Type(发送的数据类型)、Cookie(会话信息)等。
  • 响应头(Response Headers)

    • 包含了服务器返回的元数据,如Content-Type(响应的数据类型)、Set-Cookie(设置客户端的cookie)等。
  • 响应体(Response Body)

    • 服务器返回的数据本身,可能是HTML页面、JSON对象、图片或视频等。

请求头(Request Header)

  • HTTP请求时定义的头部信息,如Accept、Host、cookie、User-Agent等。
  • 用于告诉服务器请求的上下文信息。
  • 我们在做 HTTP 请求的时候,除了提交一些参数之外,我们还有定义一些 HTTP 请求的头部信息,比如 Accept、Host、cookie、User-Agent等等,这些参数也是我们在做爬虫要用到,通过这些信息,欺骗服务器,告诉它我们是正规请求,比如,我们可以在代码里面设置 cookie 告诉服务器我们就是在这个浏览器请求的会话,User-Agent 告诉服务器我们是浏览器请求的在这里插入图片描述

服务器响应

  • 响应码:如200(成功请求)、404(未找到页面)、502(服务器错误)。
  • 响应头:告诉客户端数据展现形式、cookie设置等。
  • 响应体:服务器返回的数据,可能是HTML、JSON或二进制数据。
  • 当我们请求成功之后,服务器会给我们返回响应码之外,还有响应头,这个头主要是告诉我们数据以什么样的形式展现,告诉我们cookie的设置,还有一个,就是响应体了,说白了,就是服务器返回给我们的数据,我们点击 Response 就可以看到相关的数据了。
    在这里插入图片描述

抓包的意义

  • 抓包是理解浏览器与服务器交互的过程。
  • 通过抓包,可以了解请求方式、参数、请求头定义以及如何获取返回数据。也就是拿到这边响应的数据。
    在这里插入图片描述
    这样子我们就已经离实际爬虫又进一步啦。

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

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

相关文章

Vulnhub靶机-Jangow 1.0.1

Vulnhub靶机-Jangow 1.0.1 修改为NAT模式 ?buscarecho <?php eval($_POST[cmd])?> >shell.php后面试了试很多网上的方法反弹shell但都不行

只用一个 HTML 元素可以写出多少形状?——平行四边形篇

您有没有想过一个问题&#xff0c;如果我们只用一个 div 元素&#xff0c;一共可以写出多少种形状呢&#xff1f; 暂停一下&#xff0c;思考三秒钟&#xff0c;默默记下自己的答案&#xff0c;看看自己想到的答案对不对。然后&#xff0c;我们就来一起盘点一下吧…… 今天的主…

java开发环境搭建基础之3----开发工具eclipse中Maven配置

一.背景 公司安排了带徒弟任务&#xff0c;写点基础的环境搭建这些吧。搭建基础开发环境&#xff0c;主要是jdk、eclipse、git、maven、mysql。后续再考虑编写jenkins、nexus、docker、1panel等CI/CD环境搭建。本次主要内容是eclipse中maven环境的配置。我的开发环境&#xff0…

React 学习——路由跳转(Link、useNavigate)、跳转时传递参数(问号传递、path中冒号拼接)

需要四个页面&#xff1a;项目入口index.js文件&#xff0c;router配置路由跳转文件&#xff0c;article组件页面&#xff0c;login组件页面 1、项目入口index.js文件 注意&#xff1a;要安装这个依赖 react-router-dom import React from react import { createRoot } fro…

TZDYM001矩阵系统源码 矩阵营销系统多平台多账号一站式管理

外面稀有的TZDYM001矩阵系统源码&#xff0c;矩阵营销系统多平台多账号一站式管理&#xff0c;一键发布作品。智能标题&#xff0c;关键词优化&#xff0c;排名查询&#xff0c;混剪生成原创视频&#xff0c;账号分组&#xff0c;意向客户自动采集&#xff0c;智能回复&#xf…

vue3使用递归组件渲染层级结构

先看看是不是你想要的&#xff1a; 当有层级去渲染的时候&#xff0c;嵌套的层级不明确&#xff0c;这时只能通过递归组件去渲染。 数据如下&#xff1a; 通过判断subCatalog这个字段的长度是否大于0来确定是否有下级。 上代码&#xff1a;(代码是使用uniapp开发的&#xff0…

简单洗牌算法

&#x1f389;欢迎大家收看&#xff0c;请多多支持&#x1f339; &#x1f970;关注小哇&#xff0c;和我一起成长&#x1f680;个人主页&#x1f680; ⭐目前主更 专栏Java ⭐数据结构 ⭐已更专栏有C语言、计算机网络⭐ 在学习了ArrayList之后&#xff0c;我们可以通过写一个洗…

iOS ------ 持久化

一&#xff0c;数据持久化的目的 1&#xff0c;快速展示&#xff0c;提升体验 已经加载过的数据&#xff0c;用户下次查看时&#xff0c;不需要再次从网络&#xff08;磁盘&#xff09;加载&#xff0c;直接展示给用户 2.节省用户流量 对于较大的资源数据进行缓存&#xff…

C++|设计模式(七)|⭐️观察者模式与发布/订阅模式,你分得清楚吗

本文内容来源于B站&#xff1a; 【「观察者模式」与「发布/订阅模式」&#xff0c;你分得清楚吗&#xff1f;】 文章目录 观察者模式&#xff08;Observer Pattern&#xff09;的代码优化观察者模式 与 发布订阅模式 他们是一样的吗&#xff1f;发布订阅模式总结 我们想象这样一…

批量下载 B 站 视频的工具 downkyi

批量下载 B 站 视频的工具 downkyi 亲测好用 图片&#xff1a; 下载地址&#xff1a; https://github.com/leiurayer/downkyi

MES系统在机床产业智能化的作用

MES系统&#xff08;Manufacturing Execution System&#xff0c;制造执行系统&#xff09;在机床产业智能化过程中发挥着至关重要的作用。以下是万界星空科技MES系统在机床产业智能化中的几个关键作用&#xff1a; 1. 实时数据采集与分析 数据采集&#xff1a;MES系统通过与生…

jenkins获取sonarqube质量门禁结果

前景 在使用 Jenkins 集成 SonarQube 时&#xff0c;获取质量门禁&#xff08;Quality Gate&#xff09;结果非常重要。SonarQube 的质量门禁是一种质量控制机制&#xff0c;用于评估代码质量是否符合预设的标准。以下是获取质量门禁结果的意义和作用&#xff1a; 评估代码质量…

navicat 17 安装

百度网盘 链接: https://pan.baidu.com/s/1nFFQzWhjxRUM_X6bVlWNGw?pwd8888 提取码: 8888 1.双击运行安装包 2.点击下一步 2.勾选我同意&#xff0c;点击下一步 3.自定义安装路径&#xff0c;点击下一步 4.注意勾选桌面快捷方式&#xff0c;点击下一步 5.点击安装 6.点击完…

[渗透测试学习] Editorial-HackTheBox

文章目录 Editorial-HackTheBox信息搜集漏洞利用权限提升参考文章Editorial-HackTheBox 信息搜集 nmap扫描端口 nmap -sV -sC -v 10.10.11.20扫描结果如下 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.7 (Ubuntu Linux; protocol 2.…

组蛋白乳酸化和RNA甲基化如何联动?请大数据把这个思路推给科研人

在细胞生物学中&#xff0c;基因表达调控是决定细胞功能与命运的核心过程之一。组蛋白作为修饰性蛋白&#xff0c;在调控基因转录中起着至关重要的作用。近年来&#xff0c;科学家们发现&#xff0c;组蛋白的多种化学修饰&#xff08;如甲基化、乙酰化、磷酸化等&#xff09;影…

day8 Excel教程——利用数据验证规范单元格输入!(超多干货)

day8 Excel教程——利用数据验证规范单元格输入! 本章目录 day8 Excel教程——利用数据验证规范单元格输入!1. 整数,小数和文本长度1.1 限制用户输入1(最小)和10(最大)之间的数字1.2 限制用户应输入小于或等于3%的小数(百分比)值1.3 限制用户应输入文本长度为18位的身份…

2024年最全数据库开发必备神器:DataGrip 使用介绍

DataGrip 使用介绍 前言 DataGrip 是由 JetBrains 开发的一款专业的数据库管理工具&#xff0c;广泛支持多种数据库系统&#xff0c;如 MySQL、PostgreSQL、Oracle、SQL Server、SQLite、MongoDB 等。它提供了强大的 SQL 编辑和调试功能&#xff0c;使数据库开发和管理更加高…

DDR等长,到底长度差多少叫等长?

DDR4看这一篇就够了 - 知乎 (zhihu.com) 【全网首发】DDR4 PCB设计规范&设计要点PCB资源PCB联盟网 - Powered by Discuz! (pcbbar.com) 终于看到较为权威的DDR4等长要求了: !!!! 依据这个要求&#xff0c;H616项目的等长线不合格&#xff1a;

63、ELK安装和部署

一、ELK日志系统 1.1、ELK平台的定义 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将ElasticSearch、Logstash和Kiabana 三个开源工具配合使用&#xff0c;完成更强大的用户对日志的查询、排序、统计需求 E:elasticsearch ES分布式索引型非关系数据库&#xff0c;存…

loguru日志模块:简化Python自动化测试的日志管理!

引言 日志是软件开发中的关键组成部分&#xff0c;为开发和测试人员提供了调试和监控应用程序的重要手段。loguru 是一个第三方的 Python 日志库&#xff0c;以其简洁的 API 和自动化的功能脱颖而出。本文将探讨为什么项目中需要日志&#xff0c;loguru 为何受到青睐&#xff…