python网络爬虫开发实战之基本库使用

目录

第二章 基本库的使用

2.1 urllib的使用

1 发送请求

2 处理异常

3 解析链接

4 分析Robots协议

2.2 requests的使用

1 准备工作

2 实例引入

3 GET请求

4 POST请求

5 响应

6 高级用法

2.3 正则表达式

1 实例引入

2 match

3 search

4 findall

5 sub

6 compile

2.4 httpx的使用

1 示例

2 安装

3 基本使用

4 client对象

5 支持http/2.0

6 支持异步请求


第二章 基本库的使用

最基础的http包括urllib、requests、httpx。

2.1 urllib的使用

使用urllib可以实现http请求的发送,著需要指定请求的url、请求头、请求体等。此外,urllib还可以把服务器返回的响应转换为python对象。

1 发送请求

使用urllib库中的request模块,可以方便地发送请求并得到响应。

  • urlopen
import urllib.requestresponse = urllib.request.urlopen('https://www.python.org')
print(response.read().decode('utf-8'))# 利用type方法输出响应的类型
import urllib.requestresponse = urllib.request.urlopen('https://www.python.org')
print(type(response))
print(response.status)
print(response.getheaders)
print(response.getheader('Server'))# urlopen方法的API
urllib.request.urlopen(url, data=None, [timeout,]*, cafile=None, capath=None, cadefault=Flase, contexy=None)
  • data参数:可选,如果传递了这个参数,请求方式是post(模拟表单提交)。在添加该参数,需要使用bytes方法将参数转化为字节流编码格式的内容,即bytes类型。

运行结果:

  • timeout参数,设置超时时间,单位为秒。如果请求超出了设置的这个时间,还没有得到响应,就会抛出异常。如果不指定该参数,则会使用全局默认事件。

或如下:

  • 其他参数:context参数,必须是ssl.SSLContext类型,用来指定SSL的设置;cafile和capath分别用来指定CA证书和其路径;cadefault参数现在已经启用了,默认值为false。
  • request

  • 高级用法:handler,可以理解为各种处理器,包括登陆验证、处理cookie、处理代理设置。

  • 验证:适用于启用了基本身份认证的网站

  • 代理

  • cookie

获取网站的cookie:

运行结果:

(输出了每条cookie条目的名称和值)

输出文件格式的内容:

1.txt格式

2.lwp格式

通过load方法读取本地的cookie文件,获取其中内容。

2 处理异常

当出现问题时,request模块便会抛出error模块中定义的异常。

  • URLError

  • HTTPError

3 解析链接

  • urlparse

  • urlunparse

  • urlsplit

  • urlunsplit

  • urljoin

  • urlencode

  • parse_qs

  • parse_qsl

  • quote

  • unquote

4 分析Robots协议

利用urllib库的robotparser模块,可以分析网站的robots协议。

  • Robots协议

  • 爬虫名称

  • robotparser

2.2 requests的使用

1 准备工作

pip install requests

2 实例引入

3 GET请求

  • 基本实例

  • 抓取网页

  • 抓取二进制数

  • 添加请求头

4 POST请求

5 响应

6 高级用法

  • 文件上传

  • cookie设置

  • session维持

  • SSL证书验证

  • 超时设置

  • 身份认证

  • 代理设置

  • prepared request

2.3 正则表达式

1 实例引入

2 match

  • 匹配目标

  • 通用匹配

  • 贪婪与非贪婪

  • 修饰符

  • 转义匹配

3 search

4 findall

5 sub

6 compile

2.4 httpx的使用

对于强制使用http2.0协议的网站,使用urllib和requests是无法爬取数据的。这时,需要要用到支持http/2.0的请求库,比较有代表性的是hyper和httpx。

1 示例

2 安装

pip install httpx

pip install 'httpx[http2]'

3 基本使用

4 client对象

5 支持http/2.0

6 支持异步请求

来源:

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

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

相关文章

Linux内存分页:原理、优势与实践

一、分页机制核心原理 1.1 分页技术原理 核心思想: 将虚拟地址空间和物理内存划分为固定大小的页(Page),通过页表(Page Table)建立虚拟页到物理页框(Page Frame)的映射。例如,x86_64架构的4级页表结构: 虚拟地址: [63-48] | [47-39] PGD | [38-30] PUD | [29-21]…

文件上传漏洞与phpcms漏洞安全分析

目录 1. 文件上传漏洞简介 2. 文件上传漏洞的危害 3. 文件上传漏洞的触发条件 1. 文件必须能被服务器解析执行 2. 上传目录必须支持代码执行 3. 需要能访问上传的文件 4. 例外情况:非脚本文件也可能被执行 4. 常见的攻击手法 4.1 直接上传恶意文件 4.2 文件…

模块和端口

1、模块 模块内部的5个组成是:变量声明 数据流语句 低层模块实例 函数和任务 行为语句 SR锁存器 timescale 1ns / 1psmodule SR_latch(input wire Sbar ,input wire Rbar ,output wire Q ,output wire Qbar);nand…

爬虫(持续更新ing)

爬虫(持续更新ing) # 网络请求 # url统一资源定位符(如:https://www.baidu.com) # 请求过程:客户端的web浏览器向服务器发起请求 # 请求又分为四部分:请求网址,请求方法&#xff08…

2025.3.2机器学习笔记:PINN文献阅读

2025.3.2周报 一、文献阅读题目信息摘要Abstract创新点网络架构实验结论不足以及展望 一、文献阅读 题目信息 题目: Physics-Informed Neural Networks of the Saint-Venant Equations for Downscaling a Large-Scale River Model期刊: Water Resource…

使用IDEA如何隐藏文件或文件夹

选择file -> settings 选择Editor -> File Types ->Ignored Files and Folders (忽略文件和目录) 点击号就可以指定想要隐藏的文件或文件夹

前端基础之脚手架

脚手架结构 目录结构 这里的package.json,存放着我们去执行npm run serve 或是npm run build的脚本文件 package-lock.json中存放着我们使用的外部包的版本类型,相当于maven src下的main.js是整个项目的入口文件 src下的components用于存放组件&#xff…

MacBook上API调⽤⼯具推荐

在当今的软件开发中,API调用工具已经成为了开发者不可或缺的助手。无论是前端、后端还是全栈开发,API的调试、测试和管理都是日常工作中的重要环节。想象一下,如果没有这些工具,开发者可能需要手动编写复杂的CURL命令,…

pgsql行列转换

目录 一、造测试数据 二、行转列 1.函数定义 2.语法 3.示例 三、列转行 1.函数定义 2.语法 3.示例 一、造测试数据 create table test ( id int, json1 varchar, json2 varchar );insert into test values(1,111,{111}); insert into test values(2,111,222,{111,22…

NVIDIA(英伟达) GPU 芯片架构发展史

GPU 性能的关键参数 CUDA 核心数量(个):决定了 GPU 并行处理能力,在 AI 等并行计算类业务下,CUDA 核心越多性能越好。 显存容量(GB):决定了 GPU 加载数据量的大小,在 AI…

《Python实战进阶》No 10:基于Flask案例的Web 安全性:防止 SQL 注入、XSS 和 CSRF 攻击

第10集:Web 安全性:防止 SQL 注入、XSS 和 CSRF 攻击 在现代 Web 开发中,安全性是至关重要的。无论是用户数据的保护,还是系统稳定性的维护,开发者都需要对常见的 Web 安全威胁有深刻的理解,并采取有效的防…

【大数据分析 | 深度学习】在Hadoop上实现分布式深度学习

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘,以提取有价值的信息和洞察。它结合了大数据技术、人工智能(AI)、机器学习(ML&a…

盛铂科技SCP4000射频微波功率计与SPP5000系列脉冲峰值 USB功率计 区别

在射频(RF)和微波测试领域,快速、精准的功率测量是确保通信系统、雷达、卫星设备等高性能运行的核心需求。无论是连续波(CW)信号的稳定性测试,还是脉冲信号的瞬态功率分析,工程师都需要轻量化、…

自学微信小程序的第十三天

DAY13 1、使用map组件在页面中创建地图后,若想在JS文件中对地图进行控制,需要通过地图API来完成。先通过wx.createMapContext()方法创建MapContext(Map上下文)实例,然后通过该实例的相关方法来操作map组件。 const m…

深入解析 C# 中的泛型:概念、用法与最佳实践

C# 中的 泛型(Generics) 是一种强大的编程特性,允许开发者在不预先指定具体数据类型的情况下编写代码。通过泛型,C# 能够让我们编写更灵活、可重用、类型安全且性能优良的代码。泛型广泛应用于类、方法、接口、委托、集合等多个方…

H5DS编辑器是如何让企业快速构建动态页面

H5DS编辑器核心亮点: 1.拖拽式操作,小白友好:无需设计与代码基础!通过简单拖拽元素、调整文字和动画,即可生成交互式H5页面。内置海量模板和素材库,支持自定义设计风格,轻松适配企业品牌需求。…

Unity ECS与MonoBehaviour混合架构开发实践指南

一、混合架构设计背景 1. 技术定位差异 ECS(Entity Component System):面向数据设计(DOD),适用于大规模实体计算(如10万单位战斗) MonoBehaviour:面向对象设计&#xf…

[项目]基于FreeRTOS的STM32四轴飞行器: 三.电源控制

基于FreeRTOS的STM32四轴飞行器: 三.电源控制 一.IP5305T芯片手册二.电源控制任务 一.IP5305T芯片手册 注意该芯片低功耗特性,为防止进入待机,每隔一段时间发送一个电平。 官方提供的芯片外围电路设计图: 电气特性: 当负载电流持…

java环境部署

java环境部署 一、准备工作 jrejdkeclipse jdk下载:21和1.8-----官网:Oracle:Java 下载 |神谕 该处选择要依据自身的系统类型选择下载 idea的下载安装:IntelliJ IDEA | Other Versions 二、安装 三、环境配置 四、使用 五、i…

微服务通信:用gRPC + Protobuf 构建高效API

引言 在微服务架构中,服务之间的通信是系统设计的核心问题之一。传统的RESTful API虽然简单易用,但在性能、类型安全和代码生成等方面存在一定的局限性。gRPC作为一种高性能、跨语言的RPC框架,结合Protobuf(Protocol Buffers&…