一、爬虫基础概念

什么是爬虫?

网络爬虫(Web Crawler)是一种自动获取网页内容的程序,它像蜘蛛一样在互联网上"爬行",收集和提取数据。

爬虫应用场景:

  1. 搜索引擎(Google、百度)

  2. 价格监控(电商比价)

  3. 舆情分析(社交媒体监控)

  4. 数据采集(研究、分析)

二、环境准备

1. 安装Python

  • 官网下载:Download Python | Python.org

  • 安装时勾选"Add Python to PATH"

2. 安装必要库(命令行执行)

pip install requests beautifulsoup4 pandas

3. 安装开发工具(可选)

推荐使用VS Code:Visual Studio Code - Code Editing. Redefined

三、第一个爬虫:获取网页标题

1. 创建文件 first_crawler.py

import requests
from bs4 import BeautifulSoup# 目标网址
url = "https://example.com"# 发送HTTP请求
response = requests.get(url)# 检查请求是否成功
if response.status_code == 200:# 解析HTML内容soup = BeautifulSoup(response.text, 'html.parser')# 提取网页标题title = soup.title.stringprint(f"网页标题: {title}")
else:print(f"请求失败,状态码: {response.status_code}")

2. 运行爬虫

python first_crawler.py

输出结果:

网页标题: Example Domain

四、爬虫核心组件详解

1. requests库 - 发送HTTP请求

# GET请求
response = requests.get(url)# POST请求
response = requests.post(url, data={'key': 'value'})# 添加请求头(模拟浏览器)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)

2. BeautifulSoup - 解析HTML

from bs4 import BeautifulSoup# 创建解析器对象
soup = BeautifulSoup(html_content, 'html.parser')# 查找元素
# 通过标签名
soup.find('div')          # 查找第一个div
soup.find_all('a')        # 查找所有a标签# 通过类名
soup.find(class_='header')# 通过ID
soup.find(id='main-content')# 组合查找
soup.find('div', class_='article', id='post-123')

五、爬虫道德与法律

爬虫行为准则:

  1. 尊重robots.txt:检查目标网站的爬虫协议

  2. 限制请求频率:避免对网站造成过大负担

  3. 不爬取敏感信息:如个人隐私、版权内容

  4. 遵守网站条款:查看网站的使用条款

如何检查robots.txt:

在网站根目录后添加/robots.txt,例如:
https://example.com/robots.txt

多说一句:

代码:title=soup.title.string中的第二个title哪来的?

这个title其实是网页中的title标签,如:

这里的内容是WEB里面的相关知识,这里不过多叙述。

注:该代码是本人自己所写,可能不够好,不够简便,欢迎大家指出我的不足之处。如果遇见看不懂的地方,可以在评论区打出来,进行讨论,或者联系我。上述内容全是我自己理解的,如果你有别的想法,或者认为我的理解不对,欢迎指出!!!如果可以,可以点一个免费的赞支持一下吗?谢谢各位彦祖亦菲!!!!

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

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

相关文章

dify前端源码部署详细教程

这两天突发奇想,能不能dify源码部署我只部署个前端,后端、数据库什么的还是原来docker部署dify的本地部署和遇到的问题。按逻辑来说应该是行得通的,我就亲自操作了下试下。 我这边就以我以前使用docker部署好的1.3.1版本为例。docker安装参考…

Web地图服务规范,WMS服务是什么

Web地图服务规范,WMS服务是什么? WMS,全称 Web Map Service (网络地图服务),是有OGC(开放地理空间信息联盟)制定的一项标准化协议。他的核心功能是允许客户端(比如网页浏览器或者GIS桌面软件)通过互联网或者…

北京手机基站数据分享:9.3万点位+双格式,解锁城市通信「基础设施地图」

今天分享的是——​​2023年7月北京市手机基站数据(shpcsv双格式)​​。92,785个基站点位(覆盖全市16区),WGS84坐标系直接能用,shp格式适配GIS软件,csv格式方便Excel/Pandas分析!文末…

Druid学习笔记 01、快速了解Druid中SqlParser实现

文章目录前言介绍Druid代码目录介绍模块一:Parser模块二:Druid_SQL_AST在Druid SQL Parser中有哪些AST节点类型?熟悉常用的AST节点组成常用的SQLExpr有哪些?常用的SQLStatemment?SQLTableSourceSQLSelect & SQLSelectQuerySQ…

Rust中生命周期的理解与应用

在学习Rust编程语言时,理解生命周期(Lifetime)是非常关键的,因为它直接影响到代码的安全性和性能。今天我们来深入探讨Rust中的一个常见问题——生命周期的误解和正确应用,结合实际代码实例来说明。 生命周期的基本概念 Rust中的生命周期是用来确保引用(Reference)在其…

智慧感知新体验:英飞凌雷达在智能家居的创新应用

随着智慧家居快速发展,感知技术成为实现高效、便捷生活的关键。雷达作为非接触、高精度的感测方案,正在家居应用中展现出巨大潜力。 本次研讨会将由英飞凌大中华区雷达应用产品经理 Tommy Wan主讲,分享他在智能门铃、门锁与安防摄像头等应用…

AI:新书预告—从机器学习避坑指南(分类/回归/聚类/可解释性)到大语言模型落地手记(RAG/Agent/MCP),一场耗时5+3年的技术沉淀—“代码可跑,经验可抄”—【一个处女座的程序猿】携两本AI

AI:新书预告—从机器学习避坑指南(分类/回归/聚类/可解释性)到大语言模型落地手记(RAG/Agent/MCP),一场耗时53年的技术沉淀—“代码可跑,经验可抄”—【一个处女座的程序猿】携两本AI实战书终于正式来了! 导读:大家好&…

数据结构:栈、队列

一、栈和队列与链表的区别1.链表可以在任意位置插入和删除元素2.栈和队列只允许在指定位置插入和删除元素3.栈只允许在栈顶位置入栈和出栈元素3.相同点:表、栈、队列都是一种线性结构(一对一)4.栈和队列是一种特殊的表状结构二、栈&#xff0…

cuda编程笔记(13)--使用CUB库实现基本功能

CUB 是 NVIDIA 提供的 高性能 CUDA 基础库&#xff0c;包含常用的并行原语&#xff08;Reduction、Scan、Histogram 等&#xff09;&#xff0c;可以极大简化代码&#xff0c;并且比手写版本更优化。CUB无需链接&#xff0c;只用包含<cub/cub.cuh>头文件即可需要先临时获…

LabVIEW滤波器测控系统

​基于LabVIEW 平台的高频滤波器测控系统&#xff0c;通过整合控制与测试功能&#xff0c;替代传统分离式测控模式。系统以 LabVIEW 为核心&#xff0c;借助标准化接口实现对滤波器的自动化参数调节与性能测试&#xff0c;显著提升测试效率与数据处理能力&#xff0c;适用于高频…

美团运维面试题及参考答案(上)

输入一个字符串,将其转换成数字时,需要考虑哪些情况(如字符串是否合法、是否为空、int 的范围、是否为 16 进制等)? 将字符串转换成数字时,需全面考虑多种边界情况和合法性问题,具体如下: 字符串基础状态:首先需判断字符串是否为空(长度为0)或仅包含空白字符(如空…

Spring-AI 深度实战:企业级 AI 应用开发指南与 Python 生态对比(高级篇)

为什么 Spring-AI 是企业级 AI 的“隐形冠军”&#xff1f;&#xff08;而不仅是另一个封装库&#xff09;在 Python 主导的 AI 世界中&#xff0c;Spring-AI 的诞生常被误解为“Java 的跟风之作”。但真正的企业级 AI 需求&#xff08;事务一致性、分布式追踪、安全审计&#…

OpenAI 回归开源领域突发两大推理模型,六强AI企业竞逐加剧军备竞赛态势!

获悉&#xff0c;OpenAI重回开源赛道&#xff0c;奥特曼深夜官宣两个分别名为GPT-oss-120b和GPT-oss-20b的模型将在AI软件托管平台Hugging Face上线&#xff0c;在用户输入指令后将能生成文本。两大推理模型上线GPT-oss-120b适用于需要高推理能力的生产级和通用型场景。在核心推…

嵌入式学习硬件(一)ARM体系架构

目录 1.SOC 2.内核架构的分类 3.冯诺依曼架构和哈佛架构 4.kernel 5.指令集 6.ARM处理器产品分类 7.编译的四个步骤​编辑 8.RAM和ROM​编辑 9.ARM处理器工作模式 10.异常处理 11.CPSR程序状态寄存器 1.SOC system on chip 片上系统&#xff0c;可以运行操作系统的一种高端的功…

OpenAI推出开源GPT-oss-120b与GPT-oss-20b突破性大模型,支持商用与灵活部署!

模型介绍OpenAI再次推出开源模型&#xff0c;发布了两款突破性的GPT-oss系列大模型&#xff0c;即GPT-oss-120b和GPT-oss-20b&#xff0c;为AI领域带来了巨大的创新和发展潜力。这两款模型不仅在性能上与现有的闭源模型媲美&#xff0c;而且在硬件适配性上具有明显优势&#xf…

【Unity Plugins】使用ULipSync插件实现人物唇形模拟

一、下载插件ULipSync&#xff1a; 1. 进入Github网址&#xff1a;https://github.com/hecomi/uLipSync/releases/tag/v3.1.4 2. 点击下载下方的unitypackage 3. 安装使用ULipSync的相关的插件 发行者也提到了&#xff0c;在使用的时候需要在Package Manager里安装Unity.B…

基于 Transformer-BiGRU GlobalAttention-CrossAttention 的并行预测模型

1 背景与动机 在高频、多尺度且非平稳的时序场景(如新能源产能预测、金融行情、用户行为流分析)中,单一网络分支 往往难以同时捕获 长程依赖(Transformer 长距离建模优势) 局部细粒信息(循环网络对短期波动敏感) 将 Transformer 与 双向 GRU(BiGRU) 以并行支路组合…

大模型与Spring AI的无缝对接:从原理到实践

摘要&#xff1a;本文系统梳理了大模型知识&#xff0c;以及与Spring AI的集成方案&#xff0c;涵盖本地部署、云服务、API调用三种模式的技术选型对比。通过DeepSeek官方API示例详解Spring AI的四种开发范式&#xff08;纯Prompt/Agent/RAG/微调&#xff09;&#xff0c;并提供…

linux下实现System V消息队列实现任意结构体传输

以下是一个实现&#xff0c;可以发送和接收任意类型的结构体消息&#xff0c;而不仅限于特定的CustomMsg类型&#xff1a;#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/ipc.h> #include <sys/msg.h> #include <…

TCP的三次握手和四次挥手实现过程。以及为什么需要三次握手?四次挥手?

三次握手和四次挥手的实现原理&#xff0c;以及为什么要这样设计&#xff1f;三次握手的实现三次握手的核心角色与参数三次握手的具体步骤第一步&#xff1a;客户端 → 服务器&#xff08;发送 SYN 报文&#xff09;第二步&#xff1a;服务器 → 客户端&#xff08;发送 SYNACK…