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

《0基础》学习Python——第十八讲__爬虫/<1>

一、什么是爬虫

        爬虫是一种网络数据抓取的技术。通过编写程序(通常使用Python),爬虫可以自动化地访问网页,解析网页内容并提取出所需的数据。爬虫可以用于各种用途,如搜索引擎的索引,数据分析和挖掘,以及自动化任务的执行等。爬虫可以模拟人类用户的行为,例如点击链接、填写表单或提交请求,以获取所需的数据。

二、爬虫的基本流程

  1. 目标确定:确定需要爬取的网站或数据,并分析目标网站的结构和规则。

  2. 发起请求:使用HTTP协议发起请求,获取目标网页的内容。可以使用Python中的requests库、urllib库等发送GET或POST请求。

  3. 解析内容:对获取到的网页内容进行解析,提取出需要的数据。常用的解析库有BeautifulSoup、lxml等,可以根据网页的HTML结构进行定位和提取。

  4. 数据处理:对爬取到的数据进行清洗、整理和处理,例如去除空白字符、格式转换等。

  5. 存储数据:将处理后的数据保存到本地文件或数据库中,以备后续使用。可以使用Python中的文件操作、数据库操作等技术。

  6. 循环爬取:根据需要,可以设定爬虫程序的循环,持续爬取更多的数据。可以设置爬取频率、爬取深度等参数。

  7. 反爬处理:针对一些网站的反爬措施,可以通过设置请求头部、使用代理IP、UA伪装等方式来绕过限制或识别。

  8. 异常处理:对于网络请求或解析过程中出现的异常,需要进行相应的异常处理,例如设置重试机制、记录日志等。

三、基础知识

1、什么是URL

        URL是统一资源定位符(Uniform Resource Locator)的缩写,它是互联网上标识资源的地址。URL指定了在互联网上的资源的位置和访问方式。通常,URL由多个组成部分组成,包括协议(例如HTTP或HTTPS)、主机名(例如www.example.com)、端口号(可选)、路径和查询参数等。通过URL,我们可以在浏览器中打开网页,访问网站和下载文件等。例如,"https://www.example.com/index.html"就是一个URL,指定了一个使用HTTPS协议,主机名为www.example.com,路径为/index.html的网页。

例如在浏览器打开一个网页,点击键盘F12即可查看网页源码

如上即可找到网页的URL

2、统一资源定位符 uniform resource locator:

        1、http: 超文本传输协议 HyperText Transfer Protocol 默认端口 80

                是一种用于在计算机网络中传输超媒体文档的应用层协议。它是一种客户端-服务器协议,客户端发起请求,服务器响应请求,并传输超文本(如HTML)和其他资源(如图像、音频、视频等)。HTTP使用TCP作为传输协议,通常使用端口号80。它基于请求-响应模型,客户端发送HTTP请求到服务器,服务器根据请求返回相应的HTTP响应。HTTP请求通常包括请求方法(如GET、POST等)、URL、请求头和请求体等信息,而HTTP响应包含响应状态码、响应头和响应体等信息。

        2、https: 安全的超文本传输协议 security 默认端口 443
        3、www.example.com 域名

                用于标识和定位互联网上特定的计算机或网站的名称。它是由一串用点分隔的字符组成,例如“example.com”。域名主要作为人类可读的标识符,用于代替IP地址来访问网站。

                在域名系统(Domain Name System,DNS)中,域名被映射到相应的IP地址。当用户在浏览器中输入一个域名时,浏览器会向DNS服务器发送请求,获取该域名对应的IP地址,然后使用该IP地址与网站建立连接,并获取网页内容。

                域名通常由多个级别的标签组成,从右到左依次表示不同级别的名称。例如,在域名“www.example.com”中,com是顶级域名,example是二级域名,而www是子域。

        4、80 端口 port

                端口号(Port Number)是在计算机网络中用于标识特定服务或应用程序的数字。它是一个16位的整数,范围从0到65535。端口号与IP地址组合在一起,用于唯一标识网络中的每个应用程序或服务。

        5、/path/to/myfile.html 资源路径
        6、?key1=value1&key2=value2 参数 & 表示多个参数的拼接
        7、#    锚点

                锚点(Anchor)是用于网页内部导航的一种技术。它是通常在HTML文档中添加的一个标记,用于将浏览器的视口定位到页面的特定位置。

                当页面较长或包含大量内容时,使用锚点可以方便用户直接跳转到页面中感兴趣的部分,而无需手动滚动页面。锚点通常与超链接(<a>标签)结合使用,用户点击超链接时,浏览器会自动滚动到与锚点对应的位置。

四、前端代码

主要构成标签

<!DOCTYPE html> 声明为 HTML5 文档
<html>..</html> 是网页的根元素
<head>..</head> 元素包含了文档的元(meta)数据,如 <meta charset="utf-8"> 定义网页编码格式为 utf-8。
<title>..<title> 元素描述了文档的标题
<body>..</body> 表示用户可见的内容
<div>..</div> 表示框架
<p>..</p> 表示段落
<ul>..</ul> 定义无序列表
<ol>..</ol>定义有序列表
<li>..</li>表示列表项
<img src="" alt="">表示图片
<h1>..</h1>表示标题
<a href="">..</a>表示超链接

        有如下前段代码

<!DOCTYPE html>
<html><head><!-- 内嵌样式 --><style type="text/css">body{background-color:yellow;}p{font-size: 30px;color: springgreen;}</style><meta charset="utf-8"><title>兰智数加学院</title></head><body><a href="www.anhuisjxy.com">点击访问</a><h1>兰智数加www.anhuisjxy.com</h1><h2>Python爬虫</h2><div><p>认识网页结构</p><ul><li>HTML</li><li>CSS</li></ul></div></body>
</html>
  • <!DOCTYPE html>:声明文档类型为HTML。
  • <html>:HTML文档的根元素。
  • <head>:文档的头部,用于定义文档的元数据和引入外部资源。
    • <style>:内嵌样式,用于定义页面的样式。
    • <meta charset="utf-8">:字符编码设置为UTF-8,以支持显示中文字符。
    • <title>:定义页面的标题。
  • <body>:文档的主体部分,包含了页面的实际内容。
    • <a href="www.anhuisjxy.com">点击访问</a>:超链接标签,点击时会打开链接目标为"www.anhuisjxy.com"的页面。
    • <h1>:级别最高的标题标签,显示文本"兰智数加www.anhuisjxy.com"。
    • <h2>:次级标题标签,显示文本"Python爬虫"。
    • <div>:分割页面的容器。
      • <p>:段落标签,显示文本"认识网页结构"。
      • <ul>:无序列表标签。
        • <li>:列表项标签,显示文本"HTML"和"CSS"。

五、爬虫安装request

1、安装request包

计算机长按win+R,输入cmd,将以下代码输入进去即可

pip install requests

2、pip 永久更换信号源,pip安装模块速度太慢可以更换镜像源使用国内别人下载好的资源

pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple/
pip config set install.trusted-host pypi.mirrors.ustc.edu.cn

六、get、post请求

  1. GET请求:

    用于从服务器获取数据,通过将参数附加到URL的末尾传递数据。在GET请求中,参数以键值对的形式出现在URL中,例如:http://example.com/path?param1=value1&param2=value2。GET请求的特点包括:
    1. GET请求可被浏览器缓存,可以被浏览器历史记录记录下来。
    2. GET请求可以被缓存,可以被收藏为书签。
    3. 参数有长度限制,一般不超过URL的最大长度限制(通常为2048个字符)。
    4. 数据通过URL传递,可见于URL地址栏。
  2. POST请求:

    1. 用于向服务器提交数据,通过请求体传递数据。在POST请求中,参数以键值对的形式出现在请求体中,而不是URL中。POST请求的特点包括:
      1. POST请求不会被缓存,不会被浏览器历史记录记录。
      2. 参数没有长度限制,可以传递大量数据。
      3. 数据不会出现在URL中,对安全性要求较高。

如下图查看URL、get请求\post请求,以及content-type,具体过程联系本文最上面一张图

content-type

        Content-Type字段由一个主类型(比如"text"、"image"、"application"等)和一个子类型(如"plain"、"html"、"json"等)组成,用斜杠分隔。常见的Content-Type类型包括:

  • text/plain:纯文本
  • text/html:HTML文档
  • text/css:CSS样式表
  • application/json:JSON数据
  • application/x-www-form-urlencoded:表单数据
  • multipart/form-data:通过表单上传文件
  • image/jpeg:JPEG图片
  • audio/mp3:MP3音频
  • video/mp4:MP4视频

UA伪装

        User-Agent:UA伪装是一种技术手段,用于欺骗服务器或网站,使其认为请求来自于不同的设备或浏览器。UA指的是用户代理,是HTTP请求头部中的一个字段,用于标识发送请求的客户端信息,包括设备类型、操作系统、浏览器等。

可以从下列图片查看:即将右侧滚轮拉到最底下,然后在最后一条就是User-Agent

相关文章:

《0基础》学习Python——第十八讲__爬虫/<1>

一、什么是爬虫 爬虫是一种网络数据抓取的技术。通过编写程序&#xff08;通常使用Python&#xff09;&#xff0c;爬虫可以自动化地访问网页&#xff0c;解析网页内容并提取出所需的数据。爬虫可以用于各种用途&#xff0c;如搜索引擎的索引&#xff0c;数据分析和挖掘&#x…...

NFTScan 浏览器现已支持 .mint 域名搜索功能!

近日&#xff0c;NFT 数据基础设施 NFTScan 浏览器现已支持用户输入 .mint 域名进行 Mint Blockchain 网络钱包地址的搜索查询&#xff0c; NFTScan 用户能够轻松地使用域名追踪 NFT 交易&#xff0c;为 NFT 钱包地址相关的搜索查询功能增加透明度和便利性。 NFTScan explorer…...

Git基本原理讲解、常见命令、Git版本回退、Git抛弃本地分支拉取仓库最新分支

借此机会写篇博客汇总一下自己去公司实习之后遇到的一些常见关于Git的操作。 Git基本认识 Git把数据看作是对小型文件系统的一组快照&#xff0c;每次提交更新&#xff0c;或在Git中保存项目状态时&#xff0c;Git主要对当时的全部文件制作一个快照并保存这个快照的索引。同时…...

前端网页打开PC端本地的应用程序实现方案

最近开发有一个需求&#xff0c;网页端有个入口需要跳转三维大屏&#xff0c;而这个大屏是一个exe应用程序。产品需要点击这个入口&#xff0c;并打开这个应用程序。这个就类似于百度网盘网页跳转到PC端应用程序中。 这里我们采用添加自定义协议的方式打开该应用程序。一开始可…...

遇到not allow unquoted fieldName怎么办

前言 Exception in thread "main" com.alibaba.fastjson2.JSONException: not allow unquoted fieldName, offset 2, character , line 1, column 3, fastjson-version 2.0.25 { "data":null, "code":200, "msg":"成功"…...

IDEA安装并使用通义灵码

IDEA安装并使用通义灵码 通义灵码介绍安装通义灵码 通义灵码介绍 在数字革命的前沿&#xff0c;阿里云技术团队匠心独运&#xff0c;倾力打造“通义灵码”——一个融合尖端科技的智能编码助手&#xff0c;旨在革新软件工程的未来。 实时代码扩展 通义灵码具备深度理解代码脉络的…...

<数据集>AffectNet表情识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;29752张 标注数量(xml文件个数)&#xff1a;29752 标注数量(txt文件个数)&#xff1a;29752 标注类别数&#xff1a;7 标注类别名称&#xff1a;[anger,contempt,disgust,fear,happy,neutral,sad,surprise] 序号类…...

ThinkPHP对接易联云打印

引入composer包 composer require yly-openapi/yly-openapi-sdk <?phpnamespace app\common\library;use app\admin\model\yp\Order; use App\Api\PrintService; use App\Config\YlyConfig; use App\Oauth\YlyOauthClient; use think\Cache; use think\Config;class Yly {…...

JavaScript轮播图

HTML部分 <div class"box" onmouseover"over()" onmouseout"noover()"><img src"./img/zuo.png" alt"" class"left_arrow" onclick"left_last()"><img src"./img/yy.png" al…...

修复SteamUI.dll加载失败的指南,快速修复failed to load steamui.dll

在使用Steam平台进行游戏下载、安装和运行时&#xff0c;可能会遇到一些系统错误&#xff0c;比如“failed to load steamui.dll”。这个错误通常意味着Steam的用户界面库文件steamui.dll出现了问题。本文将详细介绍steamui.dll文件的相关信息以及如何修复这一问题。 一.什么是…...

PCL Local Surface Patches 关键点提取

目录 一、算法原理1、算法原理2、 参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、算法原理 主曲率是某一点局部形状的体现,Local Surface Patches 关键点检测法…...

Vue与ASP.NET Core Web Api设置localhost与本地ip地址皆可访问

Vue的设置 我们创建并启动一个Vue项目&#xff0c;如下所示&#xff1a; 打开cmd&#xff0c;输入ipconfig查询本地ip地址&#xff1a; 想通过本地ip地址访问&#xff0c;把localhost改成本地ip地址&#xff0c;发现打不开&#xff1a; 这是因为Vue项目默认只有localhost&…...

Android 线程池的面试题 线程线程池面试题

1.为什么要用线程池 降低资源消耗&#xff1a;通过复用线程&#xff0c;降低创建和销毁线程的损耗。 提高响应速度&#xff1a;任务不需要等待线程创建就能立即执行。 提高线程的可管理性&#xff1a;使用线程池可以进行统一的分配、调优和监控。 2. 线程池执行流程&#xff08…...

Flink时间和窗口

目录 时间语义 水位线&#xff08;Watermarks&#xff09; 并行流中的水位线 窗口 滚动窗口—Tumbling Windows 滑动窗口—Sliding Windows 会话窗口—Session Windows 全局窗口—Global Windows 例子 时间语义 如图所示&#xff0c;由事件生成器&#xff08;Event Pr…...

LLaMA模型量化方法优化:提高性能与减小模型大小

LLaMA模型量化方法优化:提高性能与减小模型大小 LLaMA模型量化方法优化:提高性能与减小模型大小引言新增量化方法性能评估7B模型13B模型 结果分析结论 LLaMA模型量化方法优化:提高性能与减小模型大小 引言 在大型语言模型(LLM)的应用中,模型大小和推理速度一直是关键的挑战。…...

前端CSS实现卡片抽奖效果

引言 在网页设计中&#xff0c;互动元素能够显著提升用户体验&#xff0c;吸引用户的注意力。其中&#xff0c;卡片抽奖效果常用于营销活动、游戏或娱乐场景&#xff0c;通过随机展示不同的卡片来增加趣味性和参与度。本文将详细介绍如何使用HTML和CSS来实现一个简单的卡片抽奖…...

Java在for循环中修改集合

前天看到一篇文章什么&#xff1f;for循环也会出问题&#xff1f;&#xff0c;里面涉及到在for循环中修改集合&#xff0c;想起来自己刚入行的时候就碰到过类似的问题&#xff0c;于是复现了一下文章中的问题&#xff0c;并试验了其它在循环中修改集合的方法。 底层原理参考什…...

Java小白入门到实战应用教程-运算符详解

Java小白入门到实战应用教程-运算符 上节回顾 在上节的内容中我们了解了变量和基本数据类型的内容&#xff0c;现在回顾一下上节课的内容。 声明变量的语法为&#xff1a; 数据类型 变量名&#xff1b; 其中在java中一共有8中基本数据类型&#xff0c;分别是&#xff1a;b…...

secureCRT同时在所有已打开窗口执行命令、mac-os下使用的SecureCRT版本 以及 SecureCRT一段时间不操作没有响应的问题

一、secureCRT命令行工具一次性同时在所有已打开窗口执行命令 公司的服务器比较多&#xff0c;最近因为opcache&#xff0c;上线发布后&#xff0c;需要重启所有的WEB服务器上的php。目前使用的jenkins发布&#xff0c;不过账号安全问题&#xff0c;给jenkins的账号权限受限不能…...

增材制造与智能制造关系

在撰写的增材制造技术与装备书籍中有着明确的描述&#xff0c;增材制造是智能制造的典型范例&#xff0c;是智能制造“类”的实例化过程。这种借助于计算机编程面向对象思想的解释可以更全面的理解增材制造和智能制造的关系。增材制造实例具备了智能制造类的属性&#xff0c;智…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...