爬虫与数据分析——爬虫基础知识

news2024/12/28 5:04:16

目录

  • 一、开发环境
  • 二、爬虫的概念
  • 三、爬虫与Python
    • (一)爬虫常用语言
    • (二)python的特点
  • 四、爬虫环境依赖
    • (一)python第三方库
    • (二)第三方库的安装
  • 五、爬虫与HTTP
    • (一)URL
    • (二)HTTP消息(报文)
    • (三)响应状态码
    • (四)请求方法
    • (五)HTTP请求与响应
  • 六、python实现HTTP请求

一、开发环境

开发环境:推荐使用Pycharm社区版,或者Python IDLE也是可以的。

在这里插入图片描述

二、爬虫的概念

爬虫,也称为网络爬虫(Web Crawler),是一种自动获取网页内容并提取所需信息的程序。简单的来说,就是对网页进行爬取并进行数据分析。

常用的策略有深度优先遍历、广度优先遍历、随机遍历策略等,数据分析方法有对比分析、聚类分析等。另外,这里列出的不局限以上这些方法,具体的爬取环境还需选取不同的爬取策略和后期分析方法。

虽然可以自己开发爬虫程序,但需遵守一定的法律法规。有些网页会提供 robots.txt 文件,定义了爬虫可以访问的页面范围,否则强行爬取可能会造成一定的侵权行为。

三、爬虫与Python

(一)爬虫常用语言

爬虫技术以其高效的数据抓取能力,在众多领域中发挥着不可或缺的作用。可以用很多种语言来开发爬虫,例如,python、Java、C#、JavaScript等。

(二)python的特点

而在实现爬虫功能时,python语言因其简洁易懂的语法、强大的库支持和广泛的应用场景,成为了首选的编程语言,其有以下优点:
1、语句简洁易读,易开发
2、内置了强大的网络处理能力,提供网络编程
3、跨平台性,可在Linux、Windows、macOS多平台运行
4、拥有丰富的第三方库,为爬取技术提供支持
5、有一定的安全稳定性,保障爬虫运行

四、爬虫环境依赖

(一)python第三方库

爬虫主要使用python中的库和工具来实现,包括requests、beautisoup、pandas、pyquery、pillow、lxml、正则表达式等。例如,通常结合requests库和beautifulSoup库来爬取网页内容并解析出需要的数据,前者对网页页面发送HTTP请求并返回该页面的HTML内容,后者是用于从爬取的HTML或XML文件中提取数据。

爬取的网页通常获取的是HTML文件。HTML(超文本标记语言)用于创建网页,即用于搭建网页页面的语言,通过代码编写和设计网页的内容,然后,打开浏览器进行解析。这里的浏览器实际上是一个HTML解析器,通过读取HTML文件,解析其中的标签和属性,并根据这些指令来构建和渲染网页。

(二)第三方库的安装

以下以在pycharm中安装为例,命令都是适用的。

上面所列出的第三方库几乎都可以通过 pip install 后跟名称直接在python开发环境中安装。例如,安装requests库,Alt+F12调出控制台,然后输入pip install requests,即可下载安装:
在这里插入图片描述
安装成功:
在这里插入图片描述
安装beautisoup库,输入pip install bs4:
在这里插入图片描述
安装成功:
在这里插入图片描述

同样,安装 pymongo、selenium、pytesseract 的命令也是: pip install pymongo、pip install selenium、pip install pytesseract。而 pillow、tesseract 需要在相关的网页中下载,前者需要在 http://www.lfd.uci.edu/~gohlke/pythonlibs/搜索 pillow 并选择版本,然后在控制台通过 pip install 后跟相应的 pillow 版本即可安装;后者在 https://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe 中下载安装即可。

五、爬虫与HTTP

HTTP称为超文本传送协议,属于计算机网络架构中应用层的一个重要协议,通常适用HTML、CSS、JavaScript等来设计互联网页面。

(一)URL

统一资源定位符(URL)是为了标识互联网资源的地址,即互联网上的所有资源都有唯一确定的URL。例如,下面显示的即是当前网址“https://cn.bing.com/”的URL:
在这里插入图片描述
URL的一般形式为:<协议>://<主机>:<端口>/<路径>。常用的协议有http、https、ftp等。

(二)HTTP消息(报文)

HTTP消息包括请求消息和响应消息,数据在服务器与客户端之间交换,HTTP请求消息是客户端向服务器发送的,而HTTP响应消息是服务器向客户端发送的。请求头和响应头分别是请求消息和响应消息中的组成部分,请求头描述客户端的信息,响应头描述服务器的信息以及返回内容。
在这里插入图片描述

(三)响应状态码

在HTTP协议中,每个响应都含有一个服务器返回的状态码(status code),是一个三位数的数字,用于表示请求的处理结果。通过返回的状态码,可以了解请求的网页是否成功以及诊断失败的原因。

状态码数字备注
1XX信息状态码
2XX成功状态码
3XX重定向状态码
4XX客户端错误状态码
5XX服务器错误状态码

例如,下面点击一个请求,查看其详细信息,可以看到“200”,这里代表的就是请求成功,如下:
在这里插入图片描述
在request库中,response对象的属性status_code即为状态码,可以直接通过response.status_code进行调用。另外,response对象还有其他属性和方法如下表:

名称备注
status_code状态码
headers头部信息
text内容
urlurl地址
content-type内容的文件类型

(四)请求方法

HTTP请求方法是指客户端对资源执行的操作类型,常用的方法有GET和POST,另外还有DELETE、PUT、TRACE、HEAD、PATCH、OPTIONS等。
1、GET方法
GET方法是对页面请求该页面信息。如下图,可以看到对该资源使用的请求方法:
在这里插入图片描述
2、POST方法
POST方法通常用于提交数据或上传文件等,提交的东西包含在请求体中。如下图,可以看到对该资源使用的请求方法:
在这里插入图片描述
3、OPTIONS方法
OPTIONS方法可以查看服务器的性能。如下图,可以看到对该资源使用的请求方法:
在这里插入图片描述

(五)HTTP请求与响应

爬虫的实现过程中包括一定的HTTP请求与响应,通过向目标网站发送HTTP请求,然后接受并解析服务器返回的HTTP响应。爬虫实现过程主要包括以下步骤:
1、确定目标网页URL,并发送HTTP请求
2、服务器返回HTTP响应,包含了该网页的HTML内容
3、解析HTML内容,提取数据
4、对数据进行分析和处理,并保存

例如,通过Microsoft Edge打开一个网页,并按下F12快捷键打开网页调试工具:
在这里插入图片描述
并选择“网络/network”选项卡,这里会显示网页加载时所有网络请求和响应列表:
在这里插入图片描述
点击一个名称,即可看到其详细信息,包括请求头和响应头:
在这里插入图片描述
点击名称355008692.js,再选择“响应”,可以看到响应主体,即一个 javascript 文件内容:
在这里插入图片描述

六、python实现HTTP请求

下面例子中通过python实现HTTP请求,需要提前安装request库。

例如,对百度网址www.baidu.com实现一个HTTP请求,代码如下:

import requests

url = "http://www.baidu.com"
response = requests.get(url)
print(f"响应状态码:{response.status_code}")

上述代码是通过get()方法发送一个GET请求到http://www.baidu.com,并返回一个response对象,并print打印出响应状态码,可以看到,返回的状态码是200,是成功的:
在这里插入图片描述
而下面这个网页所返回的状态码是“502”,则有可能是服务器获取网页内容错误或者其他问题:
在这里插入图片描述
如果访问的网页已经不存在或者网页被开发者删除等,则会显示404代码,如下访问了一个已经不存在的网页,则会有以下状态码显示:
在这里插入图片描述
另外,也可以查看响应的文本内容,通过requests的text属性查看,代码如下:

import requests

url = "http://www.baidu.com"
response = requests.get(url)
print(f"内容:\n{response.text}")

返回了HTML内容,这就是获取的HTML源码,如下图:
在这里插入图片描述
在这里插入图片描述


请添加图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解JVM的内存结构及GC机制(2)

虚拟机栈占用的是操作系统内存&#xff0c;每个线程对应一个虚拟机栈&#xff0c;它是线程私有的&#xff0c;生命周期和线程一样&#xff0c;每个方法被执行时产生一个栈帧&#xff08;Statck Frame&#xff09;&#xff0c;栈帧用于存储局部变量表、动态链接、操作数和方法出…

Docker中Mysql报 mbind: Operation not permitted

问题 我们在docker中安装的mysql运行时报 mbind: Operation not permitted mbind: Operation not permitted mbind: Operation not permitted mbind: Operation not permitted mbind: Operation not permitted mbind: Operation not permitted原因 这是Docker的Seccomp安全限…

python之遍历求二叉树的深度、先序遍历、中序遍历、后序遍历

二叉树的结点用一个数组顺序存储&#xff0c;-1表示该节点为空&#xff0c;实现求该二叉树的深度、先序遍历、中序遍历、后序遍历 首先定义一个 Node 类 &#xff0c;用于表示二叉树中的节点。 class Node:def __init__(self, val):self.val valself.left Noneself.right …

python开发poc

学习使用python做到批量化的漏洞脚本 1.通过fofa搜索结果来采集脚本 2.批量化扫描漏洞 ---glassfish存在任意文件读取在默认48484端口&#xff0c;漏洞验证的poc为: "glassfish" && port"4848" && country"CN" http://loca…

PCF8591(ADDA转换芯片)

工具 1.Proteus 8 仿真器 2.keil 5 编辑器 原理图 讲解 PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行IC总线接口。PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程&#xff0c;允许在同个I2C总线上接…

序列超图的下一项推荐 笔记

1 Title Next-item Recommendation with Sequential Hypergraphs&#xff08;Jianling Wang、Kaize Ding、Liangjie Hong、Huan Liu、James Caverlee&#xff09;【SIGIR 2020】 2 Conclusion This study explores the dynamic meaning of items in realworld scenarios and p…

回合制游戏战斗模块的制作

回合制游戏战斗模块的制作 回合制游戏相信大家没玩过也见过&#xff0c;了解它的玩法。回合制&#xff0c;那就是你来我回的&#xff0c;你一回合我一回合&#xff0c;直到把对方打败。市面上的回合制游戏比较经典的有梦幻西游&#xff0c;问道&#xff0c;神武&#xff0c;完…

【机器学习入门】集成学习之梯度提升算法

系列文章目录 第1章 专家系统 第2章 决策树 第3章 神经元和感知机 识别手写数字——感知机 第4章 线性回归 第5章 逻辑斯蒂回归和分类 第5章 支持向量机 第6章 人工神经网络(一) 第6章 人工神经网络(二) 卷积和池化 第6章 使用pytorch进行手写数字识别 实操练习 使用Yolo模型进…

二分法题集2

目录 1 山脉数组的峰顶索引 分析&#xff1a; 代码展示&#xff1a; 2 寻找峰值 分析&#xff1a; 代码展示&#xff1a; 3 寻找旋转排序数组中的最小值 分析&#xff1a; 代码展示&#xff1a; 4 点名 分析&#xff1a; 代码展示&#xff1a; 1 山脉数组的峰顶…

【代码随想录】哈希表

文章目录 242.有效的字母异位词349. 两个数组的交集202. 快乐数1. 两数之和454. 四数相加 II383. 赎金信15. 三数之和18. 四数之和 242.有效的字母异位词 class Solution {public boolean isAnagram(String s, String t) {if(snull || tnull || s.length()!t.length()){return …

Linux信号机制:进程间高效传递事件与操控指令的桥梁

在Linux操作系统中&#xff0c;信号是一种进程间通信机制&#xff0c;用于通知进程某些事件的发生或请求进程执行特定的动作。信号分为两类&#xff1a;编号1至31的传统UNIX信号&#xff0c;被称为不可靠信号&#xff0c;以及编号32至63的扩展信号&#xff0c;即可靠信号&#…

CMU15/445 2023 Spring-project1 LRU-K 替换策略

在写个demo之前&#xff0c;专门学习了LRU:【LeetCode刷题】146. LRU 缓存-CSDN博客 使用哈希表 双向链表可以满足删除/增加的时间复杂度为O(1)。 在通读完15/445这块的说明之后&#xff0c;发现和LRU还是有些差别的。 官方文档中对LRU-K的解释是&#xff1a;LRU-K算法根据所…

LABVIEW--正弦+高斯噪声信号及滤波

前面板信号 后面板 LABVIEW源程序链接&#xff1a;https://pan.baidu.com/s/11B-75i4fHZwWQyjxn9yCyQ?pwd7tfj 提取码&#xff1a;7tfj

JavaWeb--JavaScript Part 01

1. JavaScript概述 JavaScript&#xff08;简称JS&#xff09;是一种轻量级的、解释执行的客户端脚本语言&#xff0c;主要用于增强网页的交互性和动态性。它起源于Netscape的LiveScript&#xff0c;并在1995年发布时更名为JavaScript。尽管名称中包含"Java"&#xf…

2024.4.3-day08-CSS 盒子模型(溢出显示、伪元素)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业 2024.4.3-学习笔记css溢出显示单行文本溢出显示省略号多行文本溢出显示省…

时序预测 | Python实现BiGRU-RELM时间序列预测

时序预测 | Python实现BiGRU-RELM时间序列预测 目录 时序预测 | Python实现BiGRU-RELM时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 BiGRU-RELM时间序列预测分析 将BiGRU和RELM两种模型进行了融合&#xff0c;BiGRU进行预测&#xff0c;RELM对BiGRU模型的预…

LED点阵屏与LCD1602

目录 LED点阵屏 点阵屏的介绍 LED点阵屏分类 点阵屏的显示原理 点阵案例 静态案例 电路图 keil文件 动态案例 电路图 keil文件 LCD1602 LCD1602概述 LCD1602内部结构 存储器结构 LCD引脚及应用电路 时序结构 LCD1602指令集 LCD1602编程 初始化 显示字符 …

使用libibverbs构建RDMA应用

本文是对论文Dissecting a Small InfiniBand Application Using the Verbs API所做的中英文对照翻译 Dissecting a Small InfiniBand Application Using the Verbs API Gregory Kerr∗ College of Computer and Information ScienceNortheastern UniversityBoston, MAkerrgccs…

三防笔记本丨工业笔记本电脑丨助力测绘行业的数字化转型

测绘行业测绘行业一直是高度技术化的领域&#xff0c;其重要性在于为建设、规划和资源管理提供准确的地理数据。然而&#xff0c;随着技术的发展&#xff0c;传统的测绘方法已经难以满足对数据精度和实时性的要求。因此&#xff0c;测绘行业正逐渐向数字化转型&#xff0c;采用…

唯美首页纯静态html5引导页源码,格子化win8风格官方引导页面源码

唯美首页纯静态html5引导页源码&#xff0c;格子化win8风格官方引导页面源码&#xff0c;喜欢的朋友可以拿去使用 源码下载 唯美首页纯静态html5引导页源码