【愚公系列】《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 所示。
    在这里插入图片描述

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

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

相关文章

如何借鉴GitHub开源项目进行LabVIEW开发

在设备开发过程中,许多开发者选择借鉴GitHub等平台上的开源项目,特别是当目标程序没有LabVIEW版本时。比如,在本例中,我们看到一个开源的Micro-Manager项目,它主要使用Java、C、Python等编程语言。对于LabVIEW开发者来…

大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡

大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡 背景 前端开发接口请求,调试,联调,接入数据,前端必不可少工具,postman是一个非常好…

CSS3+动画

浏览器内核以及其前缀 css标准中各个属性都要经历从草案到推荐的过程,css3中的属性进展都不一样,浏览器厂商在标准尚未明确的情况下提前支持会有风险,浏览器厂商对新属性的支持情况也不同,所有会加厂商前缀加以区分。如果某个属性…

Docker Compose介绍及安装使用MongoDB数据库详解

在现代容器化应用部署中,Docker Compose是一种非常实用的工具,它允许我们通过一个docker-compose.yml文件来定义和运行多容器应用程序。然而,除了Docker之外,Podman也提供了类似的工具——Podman Compose,它允许我们在…

防火墙是什么?详解网络安全的关键守护者

当今信息化时代,企业和个人在享受数字生活带来的便利时,也不可避免地面对各种潜在的风险。防火墙作为网络安全体系中的核心组件,就像一道牢不可破的防线,保护着我们的数据和隐私不受外界威胁的侵害。那么防火墙是什么?…

畅游Diffusion数字人(16):由音乐驱动跳舞视频生成

畅游Diffusion数字人(0):专栏文章导航 前言:从Pose到跳舞视频生成的工作非常多,但是还没有直接从音乐驱动生成的工作。最近字节跳动提出了MuseDance,无需复杂的动作引导输入(如姿势或深度序列),从而使不同专业水平的用户都能轻松进行灵活且富有创意的视频生成。 目录 贡…

机器学习常用包matplotlib篇(一)简单图像绘制

前言 Matplotlib 是支持 Python 语言的开源绘图库,简单且完善。 一、环境配置 1.环境设置 在 Notebook 环境绘图时,需先运行 %matplotlib inline 命令,将绘制图形嵌入当前页面。在桌面环境绘图,无需上述命令,而是在…

深入理解指针初阶:从概念到实践

一、引言 在 C 语言的学习旅程中,指针无疑是一座必须翻越的高峰。它强大而灵活,掌握指针,能让我们更高效地操作内存,编写出更优化的代码。但指针也常常让初学者望而生畏,觉得它复杂难懂。别担心,本文将用通…

如何利用DeepSeek开源模型打造OA系统专属AI助手

利用DeepSeek开源模型打造OA系统专属AI助手,可以显著提升办公效率,增强信息检索和管理能力。 注册与登录DeepSeek平台 访问DeepSeek官网 访问DeepSeek的官方网站DeepSeek。使用电子邮件或手机号码注册账号并登录。 获取API Key 登录DeepSeek平台&am…

jupyter notebook中3种读图片的方法_与_图片翻转(上下翻转,左右翻转,上下左右翻转)

已有图片cat.jpg 相对于代码的位置,可以用./cat.jpg进行读取。 下面是3种读图片的方法。 1.python读图片-pillow 图片文件不适合用open去读取 用open读图片,易引发UnicodeDecodeError: gbk codec cant decode byte 0xff in position 0: illegal multib…

软考高级《系统架构设计师》知识点(一)

计算机硬件 校验码 码距:就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。一般来说,…

【原创精品】基于Springboot3+Vue3的学习计划管理系统

大家好,我是武哥,最近给大家手撸了一个基于SpringBoot3Vue3的学习计划管理系统,可用于毕业设计、课程设计、练手学习,系统全部原创,如有遇到网上抄袭站长的,欢迎联系博主~ 项目演示视频 https://www.bili…

从零到一:我的元宵灯谜小程序诞生记

缘起:一碗汤圆引发的灵感 去年元宵节,我正捧着热腾腾的汤圆刷朋友圈,满屏都是"转发锦鲤求灯谜答案"的动态。看着大家对着手机手忙脚乱地切换浏览器查答案,我突然拍案而起:为什么不做一个能即时猜灯谜的微信…

RAG 在智能答疑中的探索

一、背景 得物开放平台是一个把得物能力进行开放,同时提供给开发者提供 公告、应用控制台、权限包申请、业务文档等功能的平台。 面向商家:通过接入商家自研系统。可以实现自动化库存、订单、对账等管理。 面向ISV :接入得物开放平台&#…

Flutter编译问题记录

问题: 运行出现以下报错 Launching lib/main.dart on macOS in debug mode... Warning: CocoaPods not installed. Skipping pod install. CocoaPods is a package manager for iOS or macOS platform code. Without CocoaPods, plugins will not work on iOS or …

长安汽车发布“北斗天枢2.0”计划,深蓝汽车普及全民智驾

2月9日,长安汽车智能化战略“北斗天枢2.0”计划暨深蓝汽车全场景智能驾驶解决方案发布会在重庆盛大召开。此次发布会标志着长安汽车正式迈入智能化战略的新纪元,携手众多“中国智驾合伙人”,共同开启全民智驾元年。 发布会上,长安…

Java--集合(理论)

目录 一、collection collection常用方法 1.List(可以存在重复元素) 迭代器 迭代器的概念 注意事项 例子 1.ArrayList 特点 2.LinkedLIst 特点 3.Vector 特点 2.Set(无重复元素) 1.HashSet 特点 2.Linkedhashset&…

三相绕线型异步电动机转子串电阻器起动的建模仿真

1.引言 2.起动方法与原理 3. 起动器的分级电阻计算 4. 起动时间计算 5.三相异步电动机瞬态数学模型 6. 三相绕线型异步电动机转子串电阻器系统仿真模型 7.实例仿真分析 8.总结 1.引言 三相绕线型异步电动机转子串电阻器起动的研究文章有很多很多,但大多数都不…

用Python编写经典《贪吃蛇》小游戏

文章目录 环境准备依赖库 实现思路核心模块设计 代码框架运行效果优化建议总结通过本框架可实现基础版贪吃蛇游戏,关键点在于:典型问题解决方案: 环境准备 依赖库 主要依赖 Python 3.6pygame 2.1.2 # 用于图形界面渲染 安装命令 pip ins…

防洪先锋,应急防洪墙助力灾害应急响应|深圳鼎跃

在全球极端天气频发的背景下,洪涝灾害日益成为威胁人类安全的重要因素。传统的防洪措施如堤坝、沙袋虽有一定效果,但在突发性洪水面前往往难以迅速部署。 应急防洪墙是一种模块化、可移动的临时防洪结构,通过拼插、折叠或液压驱动快速形成刚性…