当前位置: 首页 > article >正文

【愚公系列】《Python网络爬虫从入门到精通》001-初识网络爬虫

标题详情
作者简介愚公搬代码
头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等。
博客内容.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
欢迎👍点赞、✍评论、⭐收藏

文章目录

  • 🚀前言
  • 🚀一、网络爬虫详细概述
    • 🔎 1. 网络爬虫概述
    • 🔎 2. 网络爬虫的分类
      • 🦋2.1 通用网络爬虫
      • 🦋2.2 聚焦网络爬虫
      • 🦋2.3 增量式网络爬虫
    • 🔎 3. 网络爬虫的基本原理
  • 🚀二、搭建开发环境
    • 🔎1.安装Anaconda
    • 🔎2.PyCharm 的下载与安装
    • 🔎3.配置 PyCharm
    • 🔎4.测试 PyCharm


🚀前言

随着互联网的快速发展,数据的获取与处理变得愈发重要。在这个信息爆炸的时代,如何有效地收集和利用网络上的海量数据,成为了各行业面临的一大挑战。网络爬虫,作为一种自动化获取网页信息的技术,正逐渐成为数据分析、市场研究、竞争对手监控等领域不可或缺的工具。

本文将带领读者初步了解网络爬虫的基本概念、工作原理以及常见应用场景。我们将探讨爬虫的构建过程,包括如何发送请求、解析网页、存储数据等关键步骤。同时,还会涉及一些爬虫开发中的注意事项,如如何遵循网站的robots.txt协议、避免被封禁等。

🚀一、网络爬虫详细概述

在这个大数据的时代里,网络信息量变得越来越大、越来越多,此时如果通过人工的方式筛选自己所感兴趣的信息是一件很麻烦的事情,爬虫技术便可以自动高效地获取互联网中的指定信息,因此网络爬虫在互联网中的地位变得越来越重要。

🔎 1. 网络爬虫概述

网络爬虫(又被称为网络蜘蛛、网络机器人,在某些社区中经常被称为网页追逐者),是一种按照指定的规则(网络爬虫的算法)自动浏览或抓取网络中信息的程序。通过Python,可以很轻松地编写爬虫程序或脚本。

在生活中,网络爬虫非常常见,搜索引擎的工作离不开网络爬虫。例如,百度搜索引擎的爬虫名字叫作百度蜘蛛(Baiduspider)。百度蜘蛛是百度搜索引擎的一个自动程序,它每天都会在海量的互联网信息中进行爬取,收集并整理互联网上的网页、图片、视频等信息。然后当用户在百度搜索引擎中输入关键词时,百度会从收集的网络信息中找出相关内容,并按照一定顺序将信息展现给用户。

百度蜘蛛的工作过程中,搜索引擎会构建一个调度程序来调度百度蜘蛛的工作,这些调度程序使用一定的算法来实现。采用不同的算法,爬虫的工作效率和爬取结果会有所不同。因此,在学习爬虫时,不仅需要了解爬虫的实现过程,还需要了解一些常见的爬虫算法。在特定情况下,开发者还需要自己制定相应的算法。

🔎 2. 网络爬虫的分类

网络爬虫可以按照实现的技术和结构分为通用网络爬虫、聚焦网络爬虫和增量式网络爬虫。在实际的网络爬虫应用中,通常是这几类爬虫的组合。下面分别介绍这几类网络爬虫。

🦋2.1 通用网络爬虫

通用网络爬虫又叫作全网爬虫(Scalable Web Crawler),其爬行范围和数量巨大。由于爬取的数据是海量数据,因此对爬行速度和存储空间要求较高。通用网络爬虫在爬行页面的顺序要求上相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,因此需要较长时间才可以刷新一次页面。这种网络爬虫主要应用于大型搜索引擎,有着非常高的应用价值。通用网络爬虫主要由以下部分构成:

  • 初始URL集合
  • URL队列
  • 页面爬行模块
  • 页面分析模块
  • 页面数据库
  • 链接过滤模块

🦋2.2 聚焦网络爬虫

聚焦网络爬虫(Focused Crawler),也叫主题网络爬虫(Topical Crawler),是指按照预先定义好的主题,有选择地进行相关网页爬取的一种爬虫。与通用网络爬虫相比,聚焦网络爬虫不会将目标资源定位在整个互联网中,而是将目标网页定位在与主题相关的页面中。这种爬虫极大地节省了硬件和网络资源,保存的页面数量较少,速度也更快。聚焦网络爬虫主要应用于对特定信息的爬取,为某一类特定的人群提供服务。

🦋2.3 增量式网络爬虫

增量式网络爬虫(Incremental Web Crawler),对应增量式更新。增量式更新指的是在更新时只更新变化的部分,而未改变的部分则不更新。因此,增量式网络爬虫在爬取网页时,只会爬行新产生或发生更新的页面,对于没有发生变化的页面则不会爬取。这样可以有效减少数据下载量,减小时间和空间上的消耗,但在爬行算法上增加了一些难度。

🔎 3. 网络爬虫的基本原理

在这里插入图片描述

网络爬虫的基本工作流程如下:

  1. 获取初始的URL,该URL地址是用户自己制定的初始爬取的网页。
  2. 爬取对应URL地址的网页时,获取新的URL地址。
  3. 将新的URL地址放入URL队列。
  4. 从URL队列中读取新的URL,然后依据新的URL爬取网页,同时从新的网页中获取新的URL地址,重复上述爬取过程。
  5. 设置停止条件。如果没有设置停止条件,爬虫会一直爬取下去,直到无法获取新的URL地址或者达到停止条件后,爬虫将会停止爬取。

🚀二、搭建开发环境

🔎1.安装Anaconda

Anaconda 是一个完全免费的用于大规模数据处理、预测分析和科学计算的工具,不仅集成了 Python 解析器,还包含许多第三方模块,如 requests 模块、Beautiful Soup 模块、lxml 模块等,适合网络爬虫的开发。

  1. 打开浏览器,访问 Anaconda 官方下载页面。

  2. 下载适用于 Windows 系统的安装文件(选择 64-Bit Graphical Installer)。如图 1.2 所示。
    在这里插入图片描述

  3. 下载完成后,双击运行下载的安装文件。在出现的 “Welcome to Anaconda3” 窗口中,单击 Next 按钮。如图 1.3 所示。
    在这里插入图片描述

  4. 在 “License Agreement” 窗口中,单击 I Agree 按钮。如图 1.4 所示。
    在这里插入图片描述

  5. 在 “Select Installation Type” 窗口中,选择 “All Users (requires admin privileges)”,然后单击 Next 按钮。如图 1.5 所示。
    在这里插入图片描述

  6. 在 “Choose Install Location” 窗口中,选择安装路径(建议不要使用中文路径),然后单击 Next 按钮。如图 1.6 所示。
    在这里插入图片描述

  7. 在 “Advanced Installation Options” 窗口中,选中 “Add Anaconda to the system PATH environment variable” 复选框,然后单击 Install 按钮进行安装。如图 1.7 所示。
    在这里插入图片描述

安装过程较长,请耐心等待。安装进度如图 1.8 所示。
在这里插入图片描述

  1. 安装完成后,进入 “Installation Complete” 窗口,单击 Next 按钮。如图 1.9 所示。
    在这里插入图片描述

  2. 在 “Anaconda 与 JetBrains 合作关系推荐使用 PyCharm” 窗口中,单击 Next 按钮。如图 1.10 所示。
    在这里插入图片描述

  3. 在 “Thanks for installing Anaconda3!” 窗口中,根据个人需求选择复选框(笔者选择取消),然后单击 Finish 按钮。如图 1.11 所示。
    在这里插入图片描述

  4. 打开命令提示符窗口,输入 conda list 并按 Enter 键,查看已安装的模块列表。如图所示。
    在这里插入图片描述

🔎2.PyCharm 的下载与安装

PyCharm 是由 JetBrains 公司开发的 Python 集成开发环境,具有智能代码编辑、自动代码格式化、代码完成、智能提示、重构、单元测试、自动导入和一键代码导航等功能。

  1. 打开 PyCharm 官方下载页面。

  2. 选择 Windows 平台,下载 PyCharm Community 版。如图 1.13 所示。
    在这里插入图片描述

  3. 双击 PyCharm 安装包进行安装。在欢迎界面,单击 Next 按钮,如图 1.14 所示。
    在这里插入图片描述

  4. 在 “Choose Install Location” 窗口中选择安装路径(不建议设置在默认的 C 盘),单击 Next 按钮。如图 1.15 所示。
    在这里插入图片描述

  5. 在 “Installation Options” 窗口中,设置桌面快捷方式(选择 64-bit launcher),关联文件(选中 .py 复选框),单击 Next 按钮。如图 1.16 所示。
    在这里插入图片描述

  6. 在 “Choose Start Menu Folder” 窗口中,单击 Install 按钮进行安装。如图 1.17 所示。
    在这里插入图片描述

  7. 安装完成后,在 “Completing PyCharm Community Edition Setup” 窗口中,单击 Finish 按钮。如图 1.18 所示。
    在这里插入图片描述

🔎3.配置 PyCharm

  1. 双击 PyCharm 桌面快捷方式启动 PyCharm 程序。选择是否导入配置文件(选择不导入),单击 OK 按钮。进入阅读协议页,如图 1.19 所示。
    在这里插入图片描述

  2. 在 “Set UI theme” 窗口中,根据个人需求选择主题样式(选择 Light),单击 Next: Featured plugins 按钮。如图 1.20 所示。
    在这里插入图片描述

  3. 在 “Download featured plugins” 窗口中,直接单击 “Start using PyCharm” 按钮,进入欢迎界面。如图 1.21 所示。
    在这里插入图片描述

  4. 在欢迎页,单击 “Create New Project” 创建新工程文件。如图 1.22 所示。
    在这里插入图片描述

  5. 在 “New Project” 窗口中,选择工程文件保存路径,然后单击 Create 按钮。如图 1.23 所示。
    在这里插入图片描述

  6. 工程创建完成后,关闭 “Tip of the Day” 窗口,选择 File -> Settings 选项。如图 1.24 所示。
    在这里插入图片描述

  7. 在 “Settings” 窗口中,选择 Project: demo -> Project Interpreter,在右侧的下拉列表中选择 “Show All…”,打开 “Project Interpreters” 窗口。如图 1.25 所示。
    在这里插入图片描述

  8. 在 “Project Interpreters” 窗口中,单击右侧的 “+” 按钮。如图 1.26 所示。
    在这里插入图片描述

  9. 在 “Add Python Interpreter” 窗口中,选择左侧的 “System Interpreter” 选项,然后在右侧的下拉列表中选择 Anaconda 中的 python.exe,单击 OK 按钮。如图 1.27 所示。
    在这里插入图片描述

  10. 返回 “Project Interpreters” 窗口,选择新添加的 Anaconda 中的 python.exe 编译器,单击 OK 按钮。如图 1.28 所示。
    在这里插入图片描述

  11. 返回 “Settings” 窗口,此时将自动显示 Anaconda 内已安装的所有 Python 模块,单击 OK 按钮。如图 1.29 所示。
    在这里插入图片描述

🔎4.测试 PyCharm

  1. 右击新建好的 demo 项目,在弹出的快捷菜单中选择 New -> Python file 命令(必须选择 Python file 项,这个至关重要),如图 1.30 所示。
    在这里插入图片描述

  2. 在新建文件对话框中输入文件名 hello_world,按 Enter 键完成新建 Python 文件工作。如图 1.31 所示。
    在这里插入图片描述

  3. 在代码编辑区输入代码:

    print("hello world!")
    

    如图 1.32 所示。
    在这里插入图片描述

  4. 右击代码编辑区,在弹出的快捷菜单中选择 Run 'hello_world' 命令,运行测试代码。如图 1.33 所示。
    在这里插入图片描述

  5. 如果程序代码没有错误,将显示运行结果,如图 1.34 所示。
    在这里插入图片描述


http://www.kler.cn/a/542042.html

相关文章:

  • 网络安全与AI:数字经济发展双引擎
  • Mybatis源码02 - 初始化基本过程(引导层部分)
  • python视频爬虫
  • DeepSeek-Coder系列模型:智能编程助手的未来
  • C++:gtest的使用
  • 普通用户授权docker使用权限
  • Windows11+PyCharm利用MMSegmentation训练自己的数据集保姆级教程
  • 使用 Visual Studio Code (VS Code) 开发 Python 图形界面程序
  • Day59_20250207_图论part4_110.字符串接龙|105.有向图的完全可达性|106.岛屿的周长
  • Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)
  • 淘宝App交易链路终端混合场景体验探索
  • 教育局网络设备运维和资产管理方案
  • SpringBoot中能被外部注入以来的注解
  • 网站快速收录攻略:提升页面加载速度
  • django中间件,中间件给下面传值
  • 05:定时器生成频率不同的波形
  • Rocketmq 和 Rabbitmq ,在多消费者的情况下,可以实现顺序消费吗
  • 使用腾讯云大模型知识引擎搭建满血deepseek
  • arcgis for js实现层叠立体效果
  • C++ 用Eigen的非线性求解LevenbergMarquardt,亲测ok
  • Python 透明数字时钟
  • 独立站赋能反向海淘:跨境代购系统的用户体验与支付解决方案
  • 2025.2.10 每日学习记录3:技术报告只差相关工作+补实验
  • 在npm上传属于自己的包
  • 【RabbitMQ的x-death头】消息死亡记录头流转示例
  • 攻防世界32 very_easy_sql【SSRF/SQL时间盲注】