Python之爬虫入门(1)
目录
一、简介
二、爬虫的功能
1、爬虫的用处
2、爬虫的应用场景
三、爬虫的实现步骤
四、GET和POST方法
1、GET方法
(1)、简介
(2)、适用场景
2、POST方法
(1)、简介
(2)、适用场景
五、数据格式
1、JSON数据
2、HTML格式简介
(1)、html结构
(2)、html标签
(3)、html属性
六、总结
一、简介
爬虫(Web Crawler),也被称为网络爬虫或者网页蜘蛛,是一种按照一定规则,自动地抓取万维网信息的程序或者脚本。从功能角度来讲,它可以模拟浏览器的行为。当我们在浏览器中输入网址并访问网页时,浏览器会向服务器发送请求,服务器返回网页内容并在浏览器中显示。爬虫也是如此,它会向目标网站服务器发送请求,获取网页的 HTML(超文本标记语言)、XML(可扩展标记语言)等数据。例如,一个新闻网站的爬虫,它可以把该网站各个新闻页面的文本、标题、发布时间等信息抓取下来。
爬虫在很多场景中都发挥着重要作用。在搜索引擎领域,像百度、谷歌这类搜索引擎利用爬虫程序遍历互联网上的大量网页,收集网页内容和链接信息,从而构建索引,使用户能够通过关键词搜索快速找到相关网页。在数据采集方面,企业或者研究机构可以利用爬虫收集行业数据、市场价格动态、竞争对手信息等。不过,在使用爬虫的过程中,需要遵守法律法规和网站的使用规则,因为不当的爬虫行为可能会涉及侵犯知识产权、扰乱网站正常运营等问题。
二、爬虫的功能
1、爬虫的用处
数据抓取:从目标网站上抓取网页内容。
数据解析:从抓取的网页内容中提取有用的信息。
数据存储:将提取的数据存储到数据库或文件中。
数据处理:对抓取的数据进行进一步的处理和分析。
2、爬虫的应用场景
搜索引擎:如Google、Bing等,通过爬虫抓取网页内容并建立索引。
数据挖掘:从网站上抓取数据进行分析,如市场调研、舆情分析等。
价格监控:实时监控电商网站上的商品价格变化。
新闻聚合:从多个新闻网站抓取新闻内容并进行整合。
三、爬虫的实现步骤
实现一个爬虫通常包括以下几个步骤
(1)、确定目标:明确要抓取的网站和数据类型(需要遵守法律法规和网站的使用规则,因为不当的爬虫行为可能会涉及侵犯知识产权、扰乱网站正常运营等问题)。
(2)、发送HTTP请求:使用HTTP库(如Python的requests
库)向目标网站发送请求,获取网页内容。
(3)、解析HTML:使用HTML解析库(如Python的BeautifulSoup
或lxml
)解析网页内容,提取所需数据。
(4)、数据存储:将提取的数据存储到数据库、文件或其他存储介质中。
(5)、处理反爬虫机制:如果目标网站有反爬虫机制,需要采取相应的策略(如设置请求头、使用代理、限制请求频率等)。
(6)、自动化与调度:设置定时任务或使用调度工具(如cron
、Celery
等),实现爬虫的自动化运行。
四、GET和POST方法
在HTTP协议中,GET和POST是两种最常用的请求方法。在爬取数据之前要明确网页适用的请方法。
1、GET方法
(1)、简介
- GET 是一种 HTTP(超文本传输协议)请求方法,用于从指定的资源获取数据。在 Python 爬虫中,使用 GET 方法时,通常是向服务器请求获取网页的内容。就像是你去图书馆的书架前,只是看看有什么书(获取信息),而不改变书架上的任何东西。
(2)、适用场景
- 当你想要获取网页的静态内容,比如一个博客文章的页面、产品介绍页面等,GET 方法是很合适的。例如,你想爬取豆瓣电影的某个电影详情页面,使用 GET 方法向服务器发送请求,服务器会返回该电影页面的 HTML 代码,其中包含电影的名称、评分、导演、演员等信息。
2、POST方法
(1)、简介
- POST 也是一种 HTTP 请求方法,它主要用于向指定的资源提交要被处理的数据。与 GET 不同,POST 方法通常会改变服务器端的数据状态,就好像你去图书馆的服务台还书或者借书(改变图书馆的藏书状态)。
(2)、适用场景
- 当你需要向服务器提交数据来获取相应结果时,比如登录一个网站、提交表单数据等场景。例如,在一个在线购物网站上,当你下单购买商品时,你的订单信息(商品编号、数量、收货地址等)会通过 POST 方法发送给服务器,服务器根据这些信息进行处理,比如更新库存、生成订单记录等。
五、数据格式
用爬虫爬取的文本数据常见的有纯文本(.txt)、HTML格式(.html)、XML 格式(.xml)、JSON 格式(.json)等。
1、JSON数据
《Python基础》之Python中可以转换成json数据类型的数据_python 变量转换成json-CSDN博客
2、HTML格式简介
HTML(HyperText Markup Language)是构建网页的标准标记语言。爬虫在抓取网页内容后,通常需要解析HTML来提取有用的信息。以下是一些HTML的基本知识:
(1)、html结构
<!DOCTYPE html>
<html>
<head><title>页面标题</title><meta charset="UTF-8"><meta name="description" content="页面描述">
</head>
<body><h1>这是一个标题</h1><p>这是一个段落。</p><a href="https://www.example.com">这是一个链接</a>
</body>
</html>
-
<!DOCTYPE html>
:声明文档类型为HTML5。 -
<html>
:HTML文档的根元素。 -
<head>
:包含文档的元数据(如标题、字符集、样式表等)。 -
<body>
:包含网页的实际内容。
(2)、html标签
HTML使用标签(Tag)来定义网页的结构和内容。常见的HTML标签包括:
-
<h1>
到<h6>
:标题标签,<h1>
是最高级别的标题,<h6>
是最低级别的标题。 -
<p>
:段落标签。 -
<a>
:链接标签,href
属性指定链接的目标URL。 -
<img>
:图片标签,src
属性指定图片的URL。 -
<div>
:块级容器标签,用于组织内容。 -
<span>
:行内容器标签,用于组织行内内容。 -
<ul>
和<li>
:无序列表标签。 -
<ol>
和<li>
:有序列表标签。
(3)、html属性
HTML标签可以包含属性(Attribute),属性提供了关于标签的额外信息。
-
id
:唯一标识一个元素。 -
class
:为元素指定一个或多个类名,用于CSS样式或JavaScript操作。 -
href
:链接标签的属性,指定链接的目标URL。 -
src
:图片标签的属性,指定图片的URL。 -
alt
:图片标签的属性,指定图片的替代文本。
六、总结
爬虫是一种强大的工具,能够自动化地从互联网上抓取和提取数据。实现一个爬虫通常包括发送HTTP请求、解析HTML、提取数据、存储数据等步骤。了解HTML的基本结构和标签是进行HTML解析的基础。通过Python等编程语言,可以轻松实现一个简单的爬虫。
相关文章:
Python之爬虫入门(1)
目录 一、简介 二、爬虫的功能 1、爬虫的用处 2、爬虫的应用场景 三、爬虫的实现步骤 四、GET和POST方法 1、GET方法 (1)、简介 (2)、适用场景 2、POST方法 (1)、简介 (2)…...
《MySQL 表结构设计基础》
一、引言 MySQL 表结构设计是数据库开发中的重要环节,合理的设计不仅能提高数据库性能,还能使数据更易于维护和管理。本文将详细介绍 MySQL 表结构设计的基础要点。 在数据库开发中,MySQL 表结构设计的重要性不言而喻。一个良好的表结构设计…...
微信小程序 - 解决报错{“errno“:600001,“errMsg“:“request:fail errcode:-202cronet_error_code:-202error_msg:net::
前言 关于此问题网上的教程都无法解决,如果您的报错信息与我相似,即可解决。 在微信小程序开发中,详细解决小程序请求接口报错:{“errno”:600001,“errMsg”:“request:fail errcode:-202cronet_error_code:-202error_msg:net::ERR_CERT_AUTH ORITY_INVALID”},微…...
k8s 为什么需要Pod?
Pod,是 Kubernetes 项目中最小的 API 对象,更加专业的说,Pod,是 Kubernetes 项目的原子调度单位。 Pod 是 Kubernetes 里的原子调度单位。这就意味着,Kubernetes 项目的调度器,是统一按照 Pod 而非容器的资…...
react 使用状态管理调用列表接口渲染列表(包含条件查询,统一使用查询按钮,重置功能),避免重复多次调用接口的方法
react开发调用api接口一般使用useEffect来监听值的变化,通过值的变化与否来进行接口调用。 比如我们要进行一个查询接口 const [pageParams, setPage] useState({name: ,id: ,});const [dataList, setDataList] useState([]);const getList async () > {const…...
常见限流算法详细解析
常见限流算法详细解析 分布式系统中,由于接口API无法控制上游调用方的行为,因此当瞬时请求量突增时,会导致服务器占用过多资源,发生响应速度降低、超时、乃至宕机,甚至引发雪崩造成整个系统不可用。 限流,…...
第四十一天 ASP应用 HTTP.sys 漏洞 iis6文件解析漏洞和短文件漏洞 access数据库泄露漏洞
前言 随着时代的发展现在呀,这个ASp已经淡出大众的视线了 ,ASP之前的火爆程度无异于现在的PHP 大家的童年 4399 什么的网站都是这个搭建的ASP 简介 | 菜鸟教程 那大家想问为什么你妹的 这个这么火的网站搭建语言被淘汰了呢 其实多半是以为它的不开…...
LLM输出评估标准
LLM输出评估标准 LLM评估方法 响应的完整性和简洁性:确定大模型的响应是否完全解决用户查询,简洁性则评估生成响应的相关性。文本相似性指标:将生成的文本与参考文本进行比较,评估它们的相似度,并给出得分以理解大模…...
ansible学习笔记之02command模块与shell模块
目录 1、概述 2、模块介绍 2.1 command模块 2.2 shell模块 2.3 小结 3、实验 3.1 测试ls命令 3.2 测试环境变量 3.3 测试操作符">" 1、概述 本文介绍ansible的command模块与shell模块,并通过实验比对两个模块的异同。 2、模块介绍 2.1…...
Python 在同一/或不同PPT文档之间复制幻灯片
复制幻灯片可以帮助我们更高效地完成工作,节省大量的制作时间。通过复制现有的幻灯片,可以快速创建新的演示文稿,而无需重新设计板式样式等。此外,复制幻灯片还可以帮助我们保持内容的一致性,使整个PPT演示文稿看起来更…...
4. React 性能优化技巧:如何让你的应用更快
在构建大型应用时,性能优化是一个非常重要的话题。React 提供了许多优化工具,帮助我们提高应用的渲染速度和响应能力。本文将分享一些常见的 React 性能优化技巧。 4.1. 使用 React.memo 缓存组件 当组件的 props 没有变化时,React 默认不会…...
云标准:云计算标准
目录 云计算标准的定义和分类 云计算标准的内容 云计算标准的重要性 云计算标准化组织 5.云计算标准的具体实例 云计算标准是确保云计算技术、服务和应用发展的重要规范,它们对于提高云计算系统的互操作性、可靠性和安全性至关重要。以下是对云计算标准的详细解…...
Redis【2】- SDS源码分析
1 简介&基础用法 Redis 中用得最多的就是字符串,在 C 语言中其实可以直接使用 char* 字符数组来实现字符串,也有很多可以直接使用得函数。但是 Redis 并没有使用 C 语言原生的字符串,而是自己实现了一个 SDS(简单动态字符串&…...
力扣打卡8:最长上升子序列
链接:300. 最长递增子序列 - 力扣(LeetCode) 本题我开始想到的是dp,复杂度为O(n^2),这也是很经典的解法。 看到进阶解法可以O(nlogn),想到可能是要用到二分,但是,我想到的是和map排…...
记录一次老平台改造通知用户刷新页面,纯前端实现
记录一次老平台改造通知用户刷新页面,纯前端实现 方案概述背景现状问题本质 方案设计前提设计实现 其他补充写在最后的话抛出一个问题 方案概述 背景 前端构建完上线,用户还停留还在老页面,用户不知道网页重新部署了,跳转页面的时…...
ubuntu22.04 使用可以用的镜像源获取你要的镜像
默认的是不行的 不管pull啥镜像 仍然会出现这个错误 Error response form daemon:Get "https://registry-1.docker.io/v2": net/http: request canceled while waiting for connection (Client.Timeout exceeded while await) 操作方法是 如果在目录没有/etc/docker…...
Chrome扩展程序开发示例
项目文件夹内文件如下: manifest.json文件内容: {"manifest_version": 3,"name": "我的法宝","description": "我的有魔法的宝贝","version": "1.0","icons": {"…...
Linux 下使用飞鸽传书实现与Windows飞秋的通信
最近把单位的办公电脑换成Linux系统,但是其他同事们都使用飞秋2013进行局域网通信和文件传输,经过一番尝试,发现飞鸽传书For Linux 2014能够实现两者的互相通信。 飞鸽传书ForLINUXLinux版下载_飞鸽传书ForLINUX免费下载_飞鸽传书ForLINUX1.2…...
docker批量创建cloudstack虚拟主机脚本
批量创建cloudstack脚本 #!/bin/bash # 配置变量 container_prefix"cloudworker-" base_ip"192.168.1." start_ip2 #开始ip start_container2 #上同 end_container4 #结束ip 包括 network_name"my_macvlan_network" image_name"dockedahi:…...
SpringBoot项目集成MinIO
最近在学习MinIO,所以想让自己的SpringBoot项目集成MinIO,在网上查阅资料,并进行操作的过程中遇到一些问题,所以想把自己遇到的坑和完成步骤记录下来供自己和各位查阅。 一. MinIO的下载安装以及基本使用 1. 下载地址:https://d…...
【Flutter】常用样式、方法、组件(长期更新中)
一、样式设置 设置颜色透明度:color: Color(0xff4B9E32).withOpacity(0.08) 二、常用方法 数组排序:list.sort(); **升序**:(obj1, obj2) > obj1.compareTo(obj2) **降序**:(obj1, obj2) > obj2.compareTo(obj1)obj1.co…...
dbus接口方法的variant类型传参详解
python实现c++中so库调用及dbus服务开发-CSDN博客 之前写的这篇博文介绍了如何创建一个dbus服务,但是注册的接口方法的入参还是比较简单的,实际上dbus的参数类型有很多种,调用方式也有多种,我们来逐一介绍下。 其实基础数据类型,如字符串、整型、浮点型、布尔型等大多数…...
【时时三省】(NIT计算机考试)Word的使用方法
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 一、软件简介 Microsoft Word,简称Word,是微软公司开发的一款文字处理软件,广泛应用于文档编辑、排版、打印等领域。无论是撰写论文、报告、简历…...
spring技术点
引入对象 Autowired 和 Resource的区别 Autowired 和 Resource的区别 valid 参数校验 jarkata进行SpringMVC校验 常规当前进行校验的配置操作,参考文档如下进行操作。 SpringMVC校验注解不生效 List类型参数校验 由于list类型默认不能进行标注校验实现&#x…...
工业—使用Flink处理Kafka中的数据_ChangeRecord1
使用 Flink 消费 Kafka 中 ChangeRecord 主题的数据,当某设备 30 秒状态连续为 “ 预警 ” ,输出预警 信息。当前预警信息输出后,最近30...
实验日志——DETR
DETR训练日志 1. 代码来源 代码源自作者的Github: https://github.com/facebookresearch/detr?tabreadme-ov-file 2. 数据来源 在DETR中只使用了COCO2017数据集,其中训练集有118288张图像,验证集有5001张数据,测试集有40671张数据&#…...
前端常用缓存技术深度剖析
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
汽车IVI中控开发入门及进阶(三十七):基于HFP协议的蓝牙电话
概述: HFP全称Hands-free Profile,是一款让蓝牙设备控制电话的软件,多用于汽车上。此类设备最常见的例子是车载免提装置与蜂窝电话或可穿戴无线耳机一起使用。该配置文件定义了支持免提配置文件的两个设备如何在点对点的基础上相互交互。免提模式的实现通常使耳机或嵌入式免…...
分布式系统架构1:共识算法Paxos
1.背景 今天开始更新分布式的文章,工作几年后还没系统的学习分布式的内容,趁着还有时间学习沉淀的时候多输出些文章 2.为什么需要分布式共识算法 思考:现在你有一份随时变动的数据,需要确保它正确存储在网络的几台不同机器上&a…...
大语言模型应用Text2SQL本地部署实践初探
自从两年前OpenAI公司发布ChatGPT后,大模型(Large Language Model,简称LLM)相关技术在国内外可谓百家争鸣,遍地开花,在传统数据挖掘、机器学习和深度学习的基础上,正式宣告进入快速发展的人工智能(Artificial Intellig…...
C# WPF抽奖程序
C# WPF抽奖程序 using Microsoft.Win32; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.…...
linux运维命令
防火墙相关命令 防火墙规则查看 firewall-cmd --list-all 禁ping firewall-cmd --permanent --add-rich-rulerule protocol valueicmp drop firewall-cmd --reload 执行完以上命令后,通过firewall-cmd --list-all查看规则生效情况 firewall-cmd --list-all 其…...
环境兼容: Vue3+ELement-plus
题目:环境兼容: Vue3ELement-plus 前言 身为小白的我也在负责一个项目咯,开发的是Vue3项目,然后就搜阅多篇文章,整理了这个。内容很多是转载的,拼成的我这个文章。 Element-plus简介 Element-plus 是基于…...
解决 PyTorch 中的 AttributeError: ‘NoneType‘ object has no attribute ‘reshape‘ 错误
这里写目录标题 一、错误分析二、错误原因三、解决方案1. 检查损失函数2. 检查前向传播3. 检查 backward 函数4. 检查梯度传递 四、前向传播与反向传播1. 前向传播2. 反向传播3. 自定义 backward 函数示例反向传播过程:常见的错误:1:损失函数…...
Unity 设计模式-命令模式(Command Pattern)详解
命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成对象,从而使得可以使用不同的请求、队列或日志请求,以及支持可撤销的操作。命令模式通常包含四个主要角色:命令(Command…...
如何解决maven项目使用Ctrl + /添加注释时的顶格问题
一、问题描述 相信后端开发的程序员一定很熟悉IDEA编译器和Maven脚手架,使用IDEA新建一个Maven工程,通过SpringBoot快速构建Spring项目。在Spring项目pom.xml文件中想添加注释,快捷键Ctrl /,但是总是顶格书写。 想保证缩进统一…...
网络安全信息收集(总结)更新
目录 重点: 前言: 又学到了,就是我们什么时候要子域名收集,什么时候收集域名,重点应该放前面 思考: 信息收集分为哪几类,什么是主域名,为什么要收集主域名,为什么要收…...
微服务-seata分布式事务
1.简述 1.1.什么是分布式事务 事务:是应用程序中一系列严密的操作,所有操作必须成功完成,要么全部失败,ACID 特性。本地事务:关系型数据库中,由一组SQL组成的一个执行单元,该单元要么整体成功,要么整体失败ÿ…...
(亲测好用)YOLO格式txt数据集转COCO格式json
1、数据集结构形式 YOLO格式数据集: b文件夹下有images和labels两个文件夹,分别存放图片和标签格式的数据。 两个文件夹下分别有train、val、test三个文件夹,里面存放对应的数据。 COCO数据集格式: COCO格式数据文件夹下有三个…...
LVS的DR模式是否依赖内核的数据包转发
LVS的DR模式是否依赖内核的数据包转发 是的,LVS(Linux Virtual Server) 的 DR(Direct Routing)模式 依赖于 内核的数据包转发。在 DR 模式下,数据包的转发行为是由 Linux 内核进行的,因此正确配…...
沿着数组的指定轴对每行(列)应用一个函数np.apply_along_axis
【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 沿着数组的指定轴 对每行(列)应用一个函数 np.apply_along_axis [太阳]选择题 根据题目代码,执行的结果是? import numpy as np array np.array([[1, 2, 3],…...
BEPUphysicsint定点数3D物理引擎使用
原文:BEPUphysicsint定点数3D物理引擎使用 - 哔哩哔哩 上一节給大家介绍了BEPUphysicsint的一些基本的情况,这节课我们来介绍它的基本使用,本节主要从以下5个方面来介绍: (1) 创建一个物理世界Space,并开启模拟迭代; (2) 添加一个物理物体…...
LinuxUDP编程
由于UDP是无连接、尽力传输的,所以Server端绑定完IP、端口号后,使用recvfrom可以阻塞等待客户端的数据,而且Client端通过sendto发送的数据包直接发送到互联网(也是基于IP、端口号)这种操作是不担保Server端是否收到的&…...
Elasticsearch vs 向量数据库:寻找最佳混合检索方案
图片来自Shutterstock上的Bakhtiar Zein 多年来,以Elasticsearch为代表的基于全文检索的搜索方案,一直是搜索和推荐引擎等信息检索系统的默认选择。但传统的全文搜索只能提供基于关键字匹配的精确结果,例如找到包含特殊名词“Python3.9”的文…...
Android显示系统(07)- OpenGL ES - 纹理Texture
Android显示系统(02)- OpenGL ES - 概述 Android显示系统(03)- OpenGL ES - GLSurfaceView的使用 Android显示系统(04)- OpenGL ES - Shader绘制三角形 Android显示系统(05)- OpenGL…...
C#加速Bitmap存图
如果希望大幅提高图像保存速度,特别是在处理非常大的图像时,可以尝试以下更直接、更高效的方法: 1. 避免使用 Bitmap 类的 Save 方法 Bitmap.Save 方法的速度受限于 GDI 库的操作,尤其是对于非常大的图像,它可能会经历…...
打通Vue3+Flask(python3)+Mysql-实现简单数据交互
一、需要准备的工具 下载python3,Vscode,pycharm(这里用的社区版),phpstudy_pro,Node.js(建议下载长期支持版本,版本不宜过低,比如18,20),Vue.js…...
PT8M2102 触控型 8Bit MCU
1 产品概述 ● PT8M2102 是一款基于 RISC 内核的8位 MTP 单片机,内部集成了电容式触摸感应模块、TIMER,PWM、LVR、LVD、WDT等外设,其主要用作触摸按键开关,广泛适用于触控调光、电子玩具、消费电子、家用电器等领域,具…...
【PyQt5教程 一】Qt Designer 安装及其使用方法说明,附程序源码
目录 一、PyQt5介绍: (1)PyQt简介: (2)PyQt API: (3)支持的环境: (4)安装: (5)配置环境变量…...
Spark on Yarn安装配置,大数据技能竞赛(容器环境)
Spark on Yarn模式,即把Spark作为一个客户端,将作业提交给Yarn服务,由于在生产环境中,很多时候都要与Hadoop使用同一个集群,因此采用Yarn来管理资源调度,可以有效提高资源利用率。 环境说明: 服…...