《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

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

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

相关文章

Vue 3项目安装Element-Plus

Element Plus 是一个基于 Vue 3 的现代前端UI框架&#xff0c;它旨在提升开发体验&#xff0c;并为开发者提供高效、优雅的组件。如果你正在使用 Vue 3 进行项目开发&#xff0c;那么安装和集成 Element Plus 是一个不错的选择。在本文中&#xff0c;博主将详细介绍如何在 Vue …

[嵌入式Linux]-常见编译框架与软件包组成

嵌入式常见编译框架与软件包组成 1.嵌入式开发准备工作 主芯片资料包括&#xff1a; 主芯片资料 主芯片开发参考手册&#xff1b;主芯片数据手册&#xff1b;主芯片规格书&#xff1b; 硬件参考 主芯片硬件设计参考资料&#xff1b;主芯片配套公板硬件工程&#xff1b; 软件…

今天我们聊聊C#的并发和并行

并发和并行是现代编程中的两个重要概念&#xff0c;它们可以帮助开发人员创建高效、响应迅速、高性能的应用程序。在C#中&#xff0c;这些概念尤为重要&#xff0c;因为该语言提供了对多线程和异步编程的强大支持。本文将介绍C#中并发和并行编程的关键概念、优点&#xff0c;并…

如何使用录屏软件录制声音?超实用的4个电脑录屏方法!

在现代的数字时代&#xff0c;录屏软件已经成为我们日常工作和学习中不可或缺的工具之一。无论是制作教学视频、演示软件功能&#xff0c;还是记录游戏过程&#xff0c;录屏软件都能提供极大的帮助。但许多人在使用录屏软件时&#xff0c;可能会遇到一个问题&#xff1a;如何将…

Godot游戏制作 03世界构建1.0版

在game场景&#xff0c;删除StaticBody2D节点&#xff0c;添加TileMap节点 添加TileSet图块集 添加TileSet源 拖动图片到图块&#xff0c;自动创建图块 使用橡皮擦擦除。取消橡皮擦后按住Shift创建大型图块。 进入选择模式&#xff0c;TileMap选择绘制&#xff0c;选中图块后在…

Leetcode 721.账户合并(hash+dfs)☆

思路&#xff1a; 最核心的地方在于如何合并&#xff1f;这里是通过具有相同的email进行账户的合并&#xff0c;这个相同的email类似于图中的共同节点将两个账户连接起来&#xff0c;所以将原来 账户名 -> 邮件1 邮件2.。。变成hash 邮件1 ->账户id1&#xff0c;账户id2…

Meta革命性发布:Llama 3.1——性能最强的AI开源模型,开启智能新时代!

前言 &#x1f680; Meta隆重推出Llama 3.1&#xff1a;迄今为止性能最强的AI模型 Meta公司近日发布了他们最新的AI语言模型——Llama 3.1&#xff0c;这一消息迅速在科技界掀起了波澜。作为猫头虎技术团队&#xff0c;我们将为大家详细解析Llama 3.1的强大功能及其应用前景。…

Android APP 音视频(02)MediaProjection录屏与MediaCodec编码

说明&#xff1a; 此MediaProjection 录屏和编码实操主要针对Android12.0系统。通过MediaProjection获取屏幕数据&#xff0c;将数据通过mediacodec编码输出H264码流&#xff08;使用ffmpeg播放&#xff09;&#xff0c;存储到sd卡上。 1 MediaProjection录屏与编码简介 这里…

HTML5 + CSS3

HTML 基础 准备开发环境 1.vscode 使用 新建文件夹 ---> 左键拖入 vscode 中 2.安装插件 扩展 → 搜索插件 → 安装打开网页插件&#xff1a;open in browser汉化菜单插件&#xff1a;Chinese 3.缩放代码字号 放大,缩小&#xff1a;Ctrl 加号&#xff0c;减号 4.设…

机械设计基础B(学习笔记)

绪论 机构&#xff1a;是一些具备各自特点的和具有确定的相对运动的基本组合的统称。 组成机构的各个相对运动部分称为构件。构件作为运动单元&#xff0c;它可以是单一的整体&#xff0c;也可以是由几个最基本的事物&#xff08;通常称为零件&#xff09;组成的刚性结构。 构件…

华杉研发九学习日记17 正则表达式 异常

华杉研发九学习日记17 一&#xff0c;正则表达式 ^ $ 作用&#xff1a; 测试字符串内的模式(匹配) 例如&#xff0c;可以测试输入字符串&#xff0c;以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证. 替换文本&#xff08;替换》 可以使用正则表达式来…

vue3 学习笔记17 -- 基于el-menu封装菜单

vue3 学习笔记17 – 基于el-menu封装菜单 前提条件&#xff1a;组件创建完成 配置路由 // src/router/index.ts import { createRouter, createWebHashHistory } from vue-router import type { RouteRecordRaw } from vue-router export const Layout () > import(/lay…

PyTorch 2.0 GPU Nvidia运行库的安装

【图书推荐】《PyTorch深度学习与计算机视觉实践》-CSDN博客 假设读者电脑带有NVIDIA 20 以上系列的显卡。 我们以CUDA 11.7cuDNN 8.2.0&#xff08;其他更高版本的组合&#xff0c;读者可以执行查阅PyTorch官网获得&#xff09;为例&#xff0c;讲解PyTorch 2.0 GPU版本的安…

rt_container_of 作用和实现过程超级详解介绍

目录 作用 ptr 获取 偏移size获取 函数作用 我们先看段代码,了解rt_container_of有什么用处&#xff1a; #include "stdio.h" #define rt_container_of(ptr, type, member) \((type *)((char *)(ptr) - (unsigned long)(&((type *)0)->member)))struct ST…

Chrome谷歌浏览器Console(控制台)显示文件名及行数

有没有这样的困扰&#xff1f;Chrome谷歌浏览器console(控制台)不显示编译文件名及行数? 设置&#xff08;Settings&#xff09;- > 忽略列表&#xff08;lgnore List&#xff09;-> 自定义排除规则&#xff08;Custom exclusion rules&#xff09; 将自定义排除规则…

昇思学习打卡-22-生成式/DCGAN生成漫画头像

文章目录 DCGAN网络数据处理构造网络生成器判别器损失函数优化器 结果展示 我们将学习DCGAN网络如何数据处理、设置网络&#xff0c;包括生成器、判别器、损失函数、优化器等。 DCGAN网络 DCGAN&#xff08;深度卷积对抗生成网络&#xff0c;Deep Convolutional Generative Ad…

go-kratos 学习笔记(1) 安装

简介&#xff1a; Kratos 一套轻量级 Go 微服务框架&#xff0c;包含大量微服务相关框架及工具。 使用步骤&#xff1a; 安装cli工具 go install github.com/go-kratos/kratos/cmd/kratos/v2latest 创建项目 通过 kratos 命令创建项目模板 # 国内拉取失败可使用gitee源 krat…

项目实战--C#实现图书馆信息管理系统

本项目是要开发一个图书馆管理系统&#xff0c;通过这个系统处理常见的图书馆业务。这个系统主要功能是&#xff1a;&#xff08;1&#xff09;有客户端&#xff08;借阅者使用&#xff09;和管理端&#xff08;图书馆管理员和系统管理员使用&#xff09;。&#xff08;2&#…

Mac装虚拟机占内存吗 Mac用虚拟机装Windows流畅吗

如今&#xff0c;越来越多的Mac用户选择在他们的设备上安装虚拟机来运行不同的操作系统。其中&#xff0c;最常见的是使用虚拟机在Mac上运行Windows。然而&#xff0c;许多人担心在Mac上装虚拟机会占用大量内存&#xff0c;影响电脑系统性能。此外&#xff0c;有些用户还关心在…

C++实现LRU缓存(新手入门详解)

LRU的概念 LRU&#xff08;Least Recently Used&#xff0c;最近最少使用&#xff09;是一种常用的缓存淘汰策略&#xff0c;主要目的是在缓存空间有限的情况下&#xff0c;优先淘汰那些最长时间没有被访问的数据项。LRU 策略的核心思想是&#xff1a; 缓存空间有限&#xff1…