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

python爬虫1:基础知识

python爬虫1:基础知识

前言

​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。

目录结构

文章目录

    • python爬虫1:基础知识
      • 1. 基础认知
        • 1.1 什么是爬虫?
        • 1.2 爬虫可以做什么?
        • 1.3 爬虫的主要流程
        • 1.4 爬虫需要学习什么?
      • 2. 网页相关知识
        • 2.1 html基础知识
        • 2.2 静态网页与动态网页
        • 2.3 常见的网页请求模式
      • 3. 其他基础知识
        • 3.1 数据库
        • 3.2 代理
      • 4. 总结

1. 基础认知

1.1 什么是爬虫?

​ 这里的爬虫,一般指的是网络爬虫,即可以自动去网络上爬取我们所需的内容的脚本程序,当然这里的自动其实是说你已经写好了程序。

1.2 爬虫可以做什么?

​ 爬虫有一句很关键的话:所见即所得。意思是你自己能在网上看见的,就是可以爬取的内容。这里需要说明一下:一个网站,你是普通用户,那么你写的爬虫也是用你自己普通用户的身份,那么只能爬取普通用户可以看见的内容,那些vip用户的内容你无法爬取(如果想要爬取,要么换一个用户账号,要么嘿嘿嘿)

在这里插入图片描述

1.3 爬虫的主要流程

​ 主要流程如下:

1. 确定目标:确定要爬取的网页/网站
2. 请求网页以获取网页源码
3. 解析网页源码以获取所需的内容
4. 将获取的内容保存到我们的本地

1.4 爬虫需要学习什么?

​ 如果你只是学来玩(我也是菜鸡),那么可以学习的内容其实不是很多,主要为:

  • 前端的基础知识(主要了解html、简单了解css和js)
  • 代理、ip池构建等基础知识也需要知道
  • python基础知识(这个肯定必须会)
  • requests请求库
  • lxml、bs4、pyquery、re解析库(一般会其中一两个即可,反正目的是相同的)
  • selenium库(动态处理必须会)
  • 数据库基础,会点简单的MySQL数据库基础就行了,不需要多深入(其实大部分时候用不到)
  • scrapy这个爬虫框架看自己需求

​ 嗯,学的东西不多,只有亿点点。

在这里插入图片描述
在这里插入图片描述

2. 网页相关知识

2.1 html基础知识

​ 这里简单说明一下html的基础知识,主要是方便看后面教程时大家都懂。

​ 首先,随便打开一个网页,鼠标右键,选择”查看源码“,你就可以html代码了:

在这里插入图片描述

​ 可以发现一个最简单的事实:html代码都是类似于<xxx>xxxx</xxxx>这样的形式,我们将它称之为标签,其可以分为两类:双标签或者单标签。双标签就是上图中那种,同一个名字会出现两次形成闭合,单标签自然只出现一次。

标签里面的字母自然具有其特殊意义。这里我肯定不会列完,只列几个最为重要的标签,也是爬虫时用到最多的标签:

  • a标签:超链接标签,即我们网页看到那种可以点击跳转的东东几乎都是a标签
    • 它有一个重要属性,名为href,其包好的值就是跳转的链接

在这里插入图片描述

  • img标签:图像标签,即我们网页上看到的那些图片几乎都是img标签
    • 它也有一个重要属性,即src,其包含了图片的下载地址

在这里插入图片描述

​ **其实,我们爬虫,爬取的就是网页中这些具有关键信息的代码内容,然后再去利用这些去获取所需。**比如我们获取图片,其实不是真的直接就把图片下载下来,而是先获取网页源码,接着获取图片链接,最后再去下载图片。

2.2 静态网页与动态网页

​ 现在网页常见的有两类:

  • 静态网页
    • 即我们打开网页,它直接就加载完了的,不会说你滚轮往下滚,会不停加载内容
    • 这类网页爬取较为简单,只要你能绕过反爬虫机制就可以了
  • 动态网页
    • 即我们打开网页,内容只加载了部分,你往下滑动,内容会不停更新,常见的网站比如百度图片之类的
    • 这类网页爬取比较困难,绕过反爬虫机制只是必须的一步,还需要进行动态处理

2.3 常见的网页请求模式

​ 最常见的两种请求方式:

  • GET请求

    • 比如你搜索某个东西都是GET请求

    • 其一般带有参数,比如百度搜索,你随便搜索一个,看看上面的网页链接,你会发现:在这里插入图片描述

    • 这时候,你就意识到:GET请求的参数都是透明的(这也是为什么不用于登录这样的表单页面的),并且参数前面一般带有一个标记字段,比如这里wd=xxxx

  • POST请求

    • 一般涉及到填写表单(登录之类的表单)都涉及到POST请求
    • POST请求肯定是隐藏看不见的,但是你想找到你提交的登录表单还是可以的,只是比较麻烦
    • 这里我举个例子,豆瓣登录,选择密码登录,随便输入一串,然后点击登录,不过在此时需要打开浏览器的”检查“功能(任何浏览器都有,但是可能名字不同,这里是Google),然后细心去找:在这里插入图片描述

3. 其他基础知识

3.1 数据库

​ 为什么需要学习数据库的基础知识,主要是方便管理爬取的内容/构建代理池。

但是,其实对于我们个人学习者来说,一般用不到数据库,普通的txt文件就够用了,因此学不学习还是看自己的需求。

3.2 代理

​ 为什么需要代理?主要目的是提高爬取速度。因为爬虫对于大部分网站来说就是害虫,因此如果你的脚本程序不限制访问速度,那么容易被判断出来是一个爬虫,就会被短时间禁掉ip。这其实属于爬虫与反爬的斗争。

​ 对于这个问题,我们可以构建代理池,即用网上别人提供的ip去访问,这样我们可以同时调用几百个ip去访问,即使一个ip一秒钟访问1次,那么速度也提升了。

​ 网上有免费的代理网站,不过肯定没有付费爽,但是建议大家使用免费的。

在这里插入图片描述

4. 总结

​ 好的,本篇文章主要梳理了一下学习爬虫的基础知识,并为大家介绍了主要用到的基础知识。下一篇就开始介绍python的请求库requests了。

相关文章:

python爬虫1:基础知识

python爬虫1&#xff1a;基础知识 前言 ​ python实现网络爬虫非常简单&#xff0c;只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点&#xff0c;方便以后复习。 目录结构 文章目录 python爬虫1&#xff1a;基础知识1. 基础认知1.1 什么是爬虫&…...

【FAQ】安防监控视频EasyCVR平台分发的FLV视频流在VLC中无法播放

众所周知&#xff0c;TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入&#xff0c;包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。在视频流的处理与分发上&#xff0c;视频监控…...

python爬虫2:requests库-原理

python爬虫2&#xff1a;requests库-原理 前言 ​ python实现网络爬虫非常简单&#xff0c;只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点&#xff0c;方便以后复习。 目录结构 文章目录 python爬虫2&#xff1a;requests库-原理1. 概述2. re…...

纹理贴图和渲染

纹理贴图 纹理映射&#xff08;也就是纹理图或者叫做纹理贴图&#xff09;是一种在计算机图形学中常用的技术&#xff0c;它可以将二维的图像&#xff08;纹理&#xff09;映射到三维物体的表面上&#xff0c;以增强视觉效果。“atlas”通常是指纹理图集&#xff0c;也就是将多…...

BLIP2

BLIP2的任务是基于已有的固定参数的图像encoder和语言大模型&#xff08;LLM&#xff09;搭建一个具有图像理解能力的图文模型&#xff0c;输入是图像和文本&#xff0c;输出是文本。 BLIP2基于Q-Former结构&#xff0c;如下图所示。Q-Former包含图像transformer和文本transfo…...

陀螺玩具跨境电商亚马逊CPC认证

陀螺指的是绕一个支点高速转动的刚体。陀螺是中国民间最早的娱乐工具之一.形状上半部分为圆形&#xff0c;下方尖锐。从前多用木头制成&#xff0c;现代多为塑料或铁制。玩时可用绳子缠绕&#xff0c;用力抽绳&#xff0c;使直立旋转。或利用发条的弹力旋转。传统古陀螺大致是木…...

TS学习02-接口

接口 ts原则之一就是对值所具有的结构进行类型检查。 结构的左右就是为了这些类型命名和代码定义契约 interface LabelValue {label: string } function point(label: LabelValue) {} let obj {label:标题&#xff0c;age: 18} point(obj)类型检查器不会去检查属性的顺序&a…...

WuThreat身份安全云-TVD每日漏洞情报-2023-08-09

漏洞名称:致远OA文件上传漏洞 漏洞级别:高危 漏洞编号:NULL 相关涉及:1. A6、A8、A8N的V8.0SP2、V8.1、V8.1SP1 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-19494 漏洞名称:Microsoft Exchange Server 欺骗漏洞 漏洞级别:高危 漏洞编号:CV…...

6. C++类的静态成员

一、对象的生产期 生存期&#xff1a;对象从诞生到结束的这段时间生存期分为静态生存期和动态生存期 1.1 静态生存期 对象的生存期与程序的运行期相同&#xff0c;则称它具有静态生存期在文件作用域中声明的对象都是具有静态生存期的若在函数内部的局部作用域中声明具有静态…...

如何使Python Docker镜像安全、快速、小巧

一、说明 在微服务领域&#xff0c;拥有安全、高效和紧凑的 Docker 映像对于成功部署至关重要。本博客将探讨有助于构建此类映像的关键因素&#xff0c;包括不以 root 用户身份运行映像的重要性、在构建映像时更新和升级包、在编写 Dockerfile 指令时考虑 Docker 的层架构&…...

AWS——03篇(AWS之Amazon S3(云中可扩展存储)-01入门)

AWS——03篇&#xff08;AWS之Amazon S3&#xff08;云中可扩展存储&#xff09;-01入门&#xff09; 1. 前言2. 关于 Amazon S32.1 介绍2.1.1 简述2.1.2 详细介绍 2.2 Amazon S3 好处和功能2.3 3. 创建S3存储桶3.1 创建存储桶3.2 修改访问权限 4. 简单实用4.1 上传图片文件4.2…...

没有synchronized,rust怎么防并发?

学过Java的同学对synchronized肯定不陌生&#xff0c;那么rust里怎么办呢&#xff1f; 在Rust中&#xff0c;可以使用标准库提供的 std::sync::Mutex 来实现加锁功能。Mutex是互斥锁的一种实现&#xff0c;用于保护共享数据在并发访问时的安全性。 下面是一个简单的示例代码&a…...

1.Python简介及安装(3.11.4)

简介 Python 是一种解释型、面向对象、动态数据类型、高级、通用、解释型的高级程序设计语言。 Python 由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。 像 Perl 语言一样, Python 源代码同样遵循 GPL(GNU General Public License) 协议。 官方宣布,…...

face_recognition人脸识别与人脸检测

1、安装face_recognition库 pip install face_recognition face_recognition库的人脸识别是基于业内领先的C开源库dlib中的深度学习模型&#xff0c;安装face_recognition库的同时会一并安装dlib深度学习框架。 2、face_recognition库的使用 1&#xff09;load_image_file加…...

vue3获得url上的参数值

1、引入 import { useRoute } from vue-router2、获得const route useRoute() console.log(route.query.number)...

chapter15:springboot与监控管理

Spring Boot与监控管理视频 1. 简介 通过引入spring-boot-starter-actuator, 可以使用SpringBoot为我们提供的准生产环境下的应用监控和管理功能。我们可以通过http, jmx, ssh协议来进行操作&#xff0c;自动得到审计、健康及指标信息等。 步骤&#xff1a; 引入spring-boo…...

http历史版本

1&#xff0c;HTTP0.9 最早的http版本&#xff0c;后来才被定义为0.9版本。 这时候通信采用的是纯文本格式&#xff1b; 只支持get请求&#xff0c;且在服务器响应之后就关闭连接&#xff1b; 没有请求头的概念&#xff0c;功能比较简单。 2&#xff0c;HTTP1.0 这个版本增…...

【Go语言】Golang保姆级入门教程 Go初学者chapter2

【Go语言】变量 VSCode插件 setting的首选项 一个程序就是一个世界 变量是程序的基本组成单位 变量的使用步骤 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zuxG8imp-1691479164956)(https://cdn.staticaly.com/gh/hudiework/imgmain/image-20…...

关于ETL的两种架构(ETL架构和ELT架构) qt

&#xfeff;ETL&#xff0c;是英文 Extract-Transform-Load 的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;extract&#xff09;、转换&#xff08;transform&#xff09;、加载&#xff08;load&#xff09;至目的端的过程。ETL一词较常用在数据仓库&#xf…...

【Linux】进程间通信——管道

目录 写在前面的话 什么是进程间通信 为什么要进行进程间通信 进程间通信的本质理解 进程间通信的方式 管道 System V IPC POSIX IPC 管道 什么是管道 匿名管道 什么是匿名管道 匿名管道通信的原理 pipe()的使用 匿名管道通信的特点 拓展代码 命名管道 什么是命…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...