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

【100天精通python】Day41:python网络爬虫开发_爬虫基础入门

目录

 专栏导读 

1网络爬虫概述

1.1 工作原理

1.2 应用场景

1.3 爬虫策略

1.4 爬虫的挑战

2 网络爬虫开发

2.1 通用的网络爬虫基本流程

2.2 网络爬虫的常用技术

2.3 网络爬虫常用的第三方库

3 简单爬虫示例


 专栏导读 

专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html

1网络爬虫概述

        网络爬虫(Web Crawler),也称为网络蜘蛛、网络机器人,是一种自动化程序,用于在互联网上浏览和抓取信息。爬虫可以遍历网页,收集数据,提取信息,以便于进一步处理和分析。网络爬虫在搜索引擎、数据采集、信息监测等领域发挥着重要作用。

1.1 工作原理

  1. 初始URL选择: 爬虫从一个或多个初始URL开始,这些URL通常是你希望开始爬取的网站的主页或其他页面。

  2. 发送HTTP请求: 对于每个初始URL,爬虫会发送HTTP请求以获取网页内容。请求可以包括GET、POST等不同的HTTP方法,也可以设置请求头、参数和Cookies等。

  3. 接收HTTP响应: 服务器将返回一个HTTP响应,其中包含网页的HTML代码和其他资源,如图片、CSS、JavaScript等。

  4. 解析网页内容: 爬虫使用HTML解析库(如Beautiful Soup或lxml)解析接收到的HTML代码,将其转换为文档对象模型(DOM)结构。

  5. 数据提取和处理: 通过DOM结构,爬虫从网页中提取所需的信息,如标题、正文、链接、图片等。这可以通过CSS选择器、XPath等方法实现。

  6. 存储数据: 爬虫将提取的数据存储到本地文件、数据库或其他存储系统中,以供后续分析和使用。

  7. 发现新链接: 在解析网页时,爬虫会找到新的链接,并将其加入待爬取的URL队列中,以便继续爬取更多页面。

  8. 重复流程: 爬虫循环执行上述步骤,从初始URL队列中取出URL,发送请求,接收响应,解析网页,提取信息,处理和存储数据,发现新链接,直到完成爬取任务。

  9. 控制和维护: 爬虫需要设置适当的请求频率和延时,以避免对服务器造成过大负担。还需要监控爬虫的运行情况,处理错误和异常。

1.2 应用场景

  • 搜索引擎:搜索引擎使用爬虫来抓取网页内容,建立索引,以便用户搜索时能够快速找到相关信息。

  • 数据采集:企业、研究机构等可以使用爬虫从互联网上采集数据,用于市场分析、舆情监测等。

  • 新闻聚合:爬虫可以从各个新闻网站抓取新闻标题、摘要等,用于新闻聚合平台。

  • 价格比较:电商网站可以使用爬虫抓取竞争对手的产品价格和信息,用于价格比较分析。

  • 科研分析:研究人员可以使用爬虫来获取科学文献、学术论文等信息。

1.3 爬虫策略

        通用爬虫(General Crawler)和聚焦爬虫(Focused Crawler)是两种不同的网络爬虫策略,用于在互联网上获取信息。它们的工作方式和应用场景有所不同。

通用爬虫(General Crawler): 通用爬虫是一种广泛用途的爬虫,它的目标是尽可能地遍历互联网上的大量网页,以收集和索引尽可能多的信息。通用爬虫会从一个起始URL开始,然后通过链接跟踪、递归爬取等方式探索更多的网页,构建一个广泛的网页索引。

通用爬虫的特点:

  • 目标是收集尽可能多的信息。
  • 开始于一个或多个起始URL,然后通过链接跟踪扩展。
  • 适用于搜索引擎和大型数据索引项目。
  • 需要考虑网站的robots.txt文件和反爬虫机制。

聚焦爬虫(Focused Crawler): 聚焦爬虫是一种专注于特定领域或主题的爬虫,它选择性地爬取与特定主题相关的网页。与通用爬虫不同,聚焦爬虫只关注某些特定的网页,以满足特定需求,如舆情分析、新闻聚合等。

聚焦爬虫的特点:

  • 专注于特定主题或领域。
  • 根据特定的关键词、内容规则等选择性地爬取网页。
  • 适用于定制化需求,如舆情监控、新闻聚合等。
  • 可以更精准地获取特定领域的信息。

在实际应用中,通用爬虫和聚焦爬虫有各自的优势和用途。通用爬虫适合用于构建全面的搜索引擎索引,以及进行大规模数据分析和挖掘。聚焦爬虫则更适合于定制化需求,能够针对特定领域或主题获取精准的信息。

1.4 爬虫的挑战

  • 网站结构变化:网站结构和内容可能随时变化,需要对爬虫进行调整和更新。

  • 反爬虫机制:一些网站采取了反爬虫措施,如限制请求频率、使用验证码等。

  • 数据清洗:从网页中提取的数据可能包含噪音,需要进行清洗和整理。

  • 法律和道德问题:爬虫需要遵守法律法规,尊重网站规则,不要滥用和侵犯他人权益。

        总结: 网络爬虫是一种自动化程序,用于从互联网上获取信息。它通过发送请求、解析网页、提取信息等步骤,实现数据的采集和整理。在不同的应用场景中,爬虫发挥着重要的作用,但也需要面对各种挑战和合规性问题。

2 网络爬虫开发

2.1 通用的网络爬虫基本流程

2.2 网络爬虫的常用技术

     网络爬虫是一种自动化的程序,用于从互联网上收集数据。常用的网络爬虫技术和第三方库包括以下内容:

1. 请求和响应处理:

  • Requests: 用于发送HTTP请求和处理响应的库,方便爬虫获取网页内容。
  • httpx: 类似于requests,支持同步和异步请求,适用于高性能爬虫。

2. 解析和提取数据:

  • Beautiful Soup: 用于解析HTML和XML文档,并提供简单的方法来提取所需数据。
  • lxml: 高性能的HTML和XML解析库,支持XPath和CSS选择器。
  • PyQuery: 基于jQuery的解析库,支持CSS选择器。

3. 动态渲染网页:

  • Selenium: 自动化浏览器库,用于处理动态渲染的网页,如JavaScript加载内容。

4. 异步处理:

  • asyncio和aiohttp: 用于异步处理请求,提高爬虫的效率。

5. 数据存储:

  • SQLite、MySQL、MongoDB: 数据库用于存储和管理爬取的数据。
  • CSV、JSON: 简单格式用于导出和导入数据。

6. 反爬虫和IP代理:

  • User-Agent设置: 设置请求的User-Agent头部来模拟不同浏览器和操作系统。
  • 代理服务器: 使用代理IP来隐藏真实IP地址,避免IP封禁。
  • 验证码处理: 使用验证码识别技术来处理需要验证码的网站。

7. Robots.txt和网站政策遵守:

  • robots.txt: 检查网站的robots.txt文件,遵循网站的规则。
  • 爬虫延迟: 设置爬虫请求的延迟,避免对服务器造成过大负担。

8. 爬虫框架:

  • Scrapy: 一个强大的爬虫框架,提供了许多功能来组织爬取过程。
  • Splash: 一个JavaScript渲染服务,适用于处理动态网页。

2.3 网络爬虫常用的第三方库

        网络爬虫使用多种技术和第三方库来实现对网页的数据获取、解析和处理。以下是网络爬虫常用的技术和第三方库:

1. 请求库: 网络爬虫的核心是发送HTTP请求和处理响应。以下是一些常用的请求库:

  • Requests: 简单易用的HTTP库,用于发送HTTP请求和处理响应。
  • httpx: 现代化的HTTP客户端,支持异步和同步请求。

2. 解析库: 解析库用于从HTML或XML文档中提取所需的数据。

  • Beautiful Soup: 用于从HTML和XML文档中提取数据的库,支持灵活的查询和解析。
  • lxml: 高性能的XML和HTML解析库,同时支持XPath和CSS选择器。

3. 数据存储库: 存储爬取到的数据是爬虫的重要环节之一。

  • SQLAlchemy: 强大的SQL工具包,用于在Python中操作关系数据库。
  • Pandas: 数据分析库,可用于数据清洗和分析。
  • MongoDB: 非关系型数据库,适合存储和处理大量的非结构化数据。
  • SQLite: 轻量级的嵌入式关系数据库。

4. 异步库: 使用异步请求可以提高爬虫的效率。

  • asyncio: Python的异步IO库,用于编写异步代码。
  • aiohttp: 异步HTTP客户端,支持异步请求。

5. 动态渲染处理: 有些网页使用JavaScript进行动态渲染,需要使用浏览器引擎进行处理。

  • Selenium: 自动化浏览器操作库,用于处理JavaScript渲染的页面。

6. 反爬虫技术应对: 一些网站采取反爬虫措施,需要一些技术来绕过。

  • 代理池: 使用代理IP来避免频繁访问同一IP被封禁。
  • User-Agent随机化: 更改User-Agent以模拟不同的浏览器和操作系统。

这只是网络爬虫常用的一些技术和第三方库。根据实际项目需求,您可以选择合适的技术和工具来实现高效、稳定和有用的网络爬虫。


3 简单爬虫示例

 创建一个简单的爬虫,例如爬取一个静态网页上的文本信息,并将其输出。

import requests
from bs4 import BeautifulSoup# 发送GET请求获取网页内容
url = 'https://www.baidu.com'
response = requests.get(url)
response.encoding = 'utf-8'  # 指定编码为UTF-8
html_content = response.text# 使用Beautiful Soup解析HTML内容
soup = BeautifulSoup(html_content, 'html.parser')# 提取网页标题
title = soup.title.text# 提取段落内容
paragraphs = soup.find_all('p')
paragraph_texts = [p.text for p in paragraphs]# 输出结果
print("Title:", title)
print("Paragraphs:")
for idx, paragraph in enumerate(paragraph_texts, start=1):print(f"{idx}. {paragraph}")

相关文章:

【100天精通python】Day41:python网络爬虫开发_爬虫基础入门

目录 专栏导读 1网络爬虫概述 1.1 工作原理 1.2 应用场景 1.3 爬虫策略 1.4 爬虫的挑战 2 网络爬虫开发 2.1 通用的网络爬虫基本流程 2.2 网络爬虫的常用技术 2.3 网络爬虫常用的第三方库 3 简单爬虫示例 专栏导读 专栏订阅地址:https://blog.csdn.net/…...

开源和自研——机器人

双足机器人: MPC技术:封闭性非常高。没有开源方案可抄。 因为开源,不需要从0构建。 这也是前两年,国外一开源华为就遥遥领先。 射频芯片/射频天线:技术封闭。华为虽然做通信,但却没有攻破。 鸿蒙&#…...

【AIGC 讯飞星火 | 百度AI|ChatGPT| 】智能对比

AI智能对比 🍸 前言🍺 概念类对比🍵 讯飞🍵 百度AI🍵 chatGPT 🍹 功能类对比☕ 讯飞☕ 百度AI☕ chatGPT 🥃 可输入字数对比🥤 百度AI🥤 讯飞🥤 chatGPT &…...

Wazuh安装及使用

环境配置 官方网址Quickstart Wazuh documentation 可以选择Elastic Stack安装,也可以选择下载虚拟机(OVA)安装 这里展示虚拟机安装 下载好文档中提供的文件 虚拟机配置要求 在VM左上角 文件->打开->刚刚下载的.ova文件&#xff0c…...

docker pull 设置代理 centos

On CentOS the configuration file for Docker is at: /etc/sysconfig/docker 用 root 权限打开 text editor sudo gedit 注意 加引号 Adding the below line helped me to get the Docker daemon working behind a proxy server: HTTP_PROXY“http://<proxy_host>:&…...

仪表板展示 | DataEase看中国:2023年中国电影市场分析

背景介绍 随着《消失的她》、《变形金刚&#xff1a;超能勇士崛起》、《蜘蛛侠&#xff1a;纵横宇宙》、《我爱你》等国内外影片的上映&#xff0c;2023年上半年的电影市场也接近尾声。据国家电影专资办初步统计&#xff0c;上半年全国城市院线票房达262亿元&#xff0c;已经超…...

在APP中如何嵌入小游戏?

APP内嵌游戏之所以能火爆&#xff0c;主要是因为互联网对流量的追求是无止境的&#xff0c;之前高速增长的红利期后&#xff0c;获取新的流量成为各大厂商的挑战&#xff0c;小游戏的引入&#xff0c;就是这个目的&#xff0c;为已有的产品赋能&#xff0c;抢占用户注意力和使用…...

神经网络基础-神经网络补充概念-02-逻辑回归

概念 逻辑回归是一种用于二分分类问题的统计学习方法&#xff0c;尽管名字中带有"回归"一词&#xff0c;但实际上它用于分类任务。逻辑回归的目标是根据输入特征来预测数据点属于某个类别的概率&#xff0c;然后将概率映射到一个离散的类别标签。 逻辑回归模型的核…...

DICOM图像的常用一些参数解析

医学图像DICOM医学影像文件格式详解 Dicom文件基本操作 DICOM图像参数&#xff1f; 像素&#xff1a;构成图片的小色点。图像每个维度的像素个数——该维度一共有多少个均匀分布的像素点。 分辨率&#xff08;单位DPI&#xff09;&#xff1a;每英寸&#xff08;Inch&#xf…...

Java虚拟机(JVM):虚拟机栈溢出

一、概念 Java虚拟机栈溢出&#xff08;Java Virtual Machine Stack Overflow&#xff09;是指在Java程序中&#xff0c;当线程调用的方法层级过深&#xff0c;导致栈空间溢出的情况。 Java虚拟机栈是每个线程私有的&#xff0c;用于存储方法的调用和局部变量的内存空间。每当…...

MySQL流程控制

流程控制 顺序结构&#xff1a; 程序从上往下依次执行分支结构&#xff1a; 程序按条件进行选择执行&#xff0c;从两条或多条路径中选择一条执行。循环结构&#xff1a; 程序满足一定条件下&#xff0c;重复执行一组语句 针对于MySQL的流程控制语句主要有3类。注意&#xff…...

智安网络|深入比较:Sass系统与源码系统的差异及选择指南

随着前端开发的快速发展&#xff0c;开发人员需要使用更高效和灵活的工具来处理样式表。在这个领域&#xff0c;Sass系统和源码系统是两个备受关注的选项。 Sass系统 Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;是一种CSS预处理器&#xff0c;它扩展了CS…...

Day14 01-Shell脚本编程详解

文章目录 第一章 Shell编程【重点】1.1. Shell的概念介绍1.1.1. 命令解释器4.1.1.2. Shell脚本 1.2. Shell编程规范1.2.1. 脚本文件的结构1.2.2. 脚本文件的执行 1.3. Shell的变量1.3.1. 变量的用法1.3.2. 变量的分类1.3.3. 局部变量1.3.4. 环境变量1.3.5. 位置参数变量1.3.6. …...

NVIDIA GPU驱动和CUDA工具包 Linux CentOS 7 在线安装指南

挑选指定系统和对应的GPU型号下载驱动和CUDA工具包: Linux CentOS安装NVIDIA GPU驱动程序和NVIDIA CUDA工具包_centos安装显卡驱动和cuda_Entropy-Go的博客-CSDN博客 相比之下&#xff0c;本文是在线安装NVIDIA GPU驱动和CUDA工具包方式&#xff0c;省去挑选对应正确安装包的烦…...

Php“牵手”拼多多商品详情页数据采集方法,拼多多API接口申请指南

拼多多详情接口 API 是开放平台提供的一种 API 接口&#xff0c;它可以帮助开发者获取商品的详细信息&#xff0c;包括商品的标题、描述、图片等信息。在电商平台的开发中&#xff0c;详情接口API是非常常用的 API&#xff0c;因此本文将详细介绍详情接口 API 的使用。 一、拼…...

未来公文的智能化进程

随着技术的飞速发展&#xff0c;公文——这个有着悠久历史的官方沟通方式&#xff0c;也正逐步走向智能化的未来。自动化、人工智能、区块链...这些现代科技正重塑我们的公文制度&#xff0c;让其变得更加高效、安全和智慧。 1.语义理解与自动生成 通过深度学习和NLP&#xff…...

C语言:深度学习知识储备

目录 数据类型 每种类型的大小是多少呢&#xff1f; 变量 变量的命名&#xff1a; 变量的分类&#xff1a; 变量的作用域和生命周期 作用域&#xff1a; 生命周期&#xff1a; 常量 字符串转义字符注释 字符串&#xff1a; 转义字符 操作符&#xff1a; 算术操作符…...

探索大模型时代下的算法工程师前景与发展路径

文章目录 大模型时代的挑战与机遇从算法到工程&#xff1a;技能升级的必要性发展路径与职业规划路径一&#xff1a;深耕研究领域路径二&#xff1a;工程实践与部署路径三&#xff1a;跨界合作与解决复杂问题路径四&#xff1a;教育培训和技术普及 不断学习与更新知识结论 &…...

【福建事业单位-综合基础知识】03行政法

【福建事业单位-综合基础知识】03行政法 1.行政法概述&#xff08;原则重点&#xff09;行政主体范围 行政行为总结 二.行政处罚2.1行政处罚的种类总结 行政法框架 1.行政法概述&#xff08;原则重点&#xff09; 行政法的首要原则是合法&#xff1b;自由裁量——合理行政&…...

CSS 背景属性

前言 背景属性 属性说明background-color背景颜色background-image背景图background-repeat背景图平铺方式background-position背景图位置background-size背景图缩放background-attachment背景图固定background背景复合属性 背景颜色 可以使用background-color属性来设置背景…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...