《0基础》学习Python——第二十讲__网路爬虫/<3>

一、用post请求爬取网页

        同样与上一节课的get强求的内容差不多,即将requests.get(url,headers=head)代码更换成requests.post(url,headers=head),其余的即打印获取的内容,如果content-type=json类型的,打印上述代码的请求,则用一个命名去获取信息,例如命名reponse=requests.post(url,headers=head),则用response.json去打印请求到的信息,类似于下列代码内容:

import requestsurl = 'http://example.com/api'
data = {'key1': 'value1', 'key2': 'value2'}  # POST请求的数据response = requests.post(url, data=data)
print(response.text)  # 打印服务器返回的响应内容
import requestshead = {  #进行UA伪装"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
}url = "https:---------"# 2、发送请求post带参数
response = requests.post(url, headers=head)#打印数据,以content-type中写的方式去打印
print(response.json)

二、状态码解析

        1、2** 成功,操作被成功接收并处理

        2、3** 重定向,需要进一步的操作以完成请求

        3、4** 客户端错误,请求包含语法错误或无法完成请求

        4、5** 服务器错误,服务器在处理请求的过程中发生了错误

例如下列:

三、页面解析

        1、引入lxml库的etree模块

通过win+cmd输入以下命令,安装lxml库

pip install lxml

通过from lxml import etree 来调用库里面etree模块

因为上部分取出页面内容为response.text 或者response.json等格式,此时通过etree来解析这段内容,如果是将网页源码爬取到文件夹中保存下来再去解析,则用etree.parse()方法,括号内写该文件的地址,如果直接在网页爬取的同时进行解析,那么便用etree.HTML()方法,括号里面写get请求得到的数据,其返回的是element对象,etree.HTML()将HTML文本解析为一个ElementTree对象的根节点(也称为树根或根元素)。ElementTree对象表示了整个HTML文档的结构,可以通过遍历树的节点和元素来提取信息或修改HTML文档。然后对这根节点进行xpath处理即访问标签内容。

        2、HTML()

   etree.HTML()是一个用于构建解析HTML文档的函数。它将HTML文本作为输入,并返回一个Element对象,可以通过该对象来访问和操作HTML文档的元素和属性。

        具体而言,etree.HTML()将HTML文本解析为一个ElementTree对象的根节点(也称为树根或根元素)。ElementTree对象表示了整个HTML文档的结构,可以通过遍历树的节点和元素来提取信息或修改HTML文档。例如线下部分代码:

from lxml import etreehtml_text = '''
<html><body><h1>这是一个标题</h1><p>这是一个段落。</p></body>
</html>
'''root = etree.HTML(html_text)  # 使用etree.HTML()解析HTML文本# 通过XPath选取元素并获取其文本内容
title = root.xpath('//h1/text()')[0]
paragraph = root.xpath('//p/text()')[0]print(title)  # 打印标题文本
print(paragraph)  # 打印段落文本

        在这个例子中,我们使用etree.HTML()将HTML文本解析为树,并使用XPath表达式选取了<h1><p>元素的文本内容。然后,我们通过索引[0]获取了第一个匹配结果的文本,并将其打印输出。

        通过使用etree.HTML(),我们可以方便地解析HTML文档,并从中提取所需的信息,如元素、属性或文本内容。

2、xpath()

        XPath是一种用于在XML文档中定位和选择节点的语言。它是一种基于路径表达式的查询语言,可以通过路径表达式来定义从根节点到目标节点的路径,并通过一系列的内置函数、运算符和谓词来筛选出符合条件的节点。

        XPath可以用于XML文档的解析和数据提取。它可以根据节点的标签名、属性、文本内容等进行节点选择和过滤。XPath提供了灵活而强大的定位和选择机制,可以快速、准确地定位到需要处理的数据,并对其进行操作。例如下列代码:

from lxml import etreexml = '''
<bookstore><book category="cooking"><title lang="en">Italian Recipes</title><author>John Doe</author><year>2010</year><price>20.00</price></book><book category="travel"><title lang="en">Paris Travel Guide</title><author>Jane Smith</author><year>2012</year><price>15.00</price></book>
</bookstore>
'''root = etree.fromstring(xml)  # 解析XML文档# 使用XPath选择节点和提取数据
titles = root.xpath('//title/text()')
authors = root.xpath('//author/text()')# 打印提取的数据
for title, author in zip(titles, authors):print(f'Title: {title}, Author: {author}')

在这个例子中,我们使用lxml库的etree模块将XML文档解析为一个Element对象,并使用XPath选择title和author节点的文本内容。然后,通过遍历titles和authors列表,我们可以打印出提取的数据。

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

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

相关文章

笔记:现代卷积神经网络之VGG

本文为李沐老师《动手学深度学习》笔记小结&#xff0c;用于个人复习并记录学习历程&#xff0c;适用于初学者 神经网络架构设计的模块化 然AlexNet证明深层神经网络卓有成效&#xff0c;但它没有提供一个通用的模板来指导后续的研究人员设计新的网络。 在下面的几个章节中&a…

【Vue】`v-if` 指令详解:条件渲染的高效实现

文章目录 一、v-if 指令概述二、v-if 的基本用法1. 基本用法2. 使用 v-else3. 使用 v-else-if 三、v-if 指令的高级用法1. 与 v-for 一起使用2. v-if 的性能优化 四、v-if 的常见应用场景1. 表单验证2. 弹窗控制 五、v-if 指令的注意事项 Vue.js 是一个用于构建用户界面的渐进式…

Flink调优详解:案例解析(第42天)

系列文章目录 一、Flink-任务参数配置 二、Flink-SQL调优 三、阿里云Flink调优 文章目录 系列文章目录前言一、Flink-任务参数配置1.1 运行时参数1.2 优化器参数1.3 表参数 二、Flink-SQL调优2.1 mini-batch聚合2.2 两阶段聚合2.3 分桶2.4 filter去重&#xff08;了解&#xf…

【中项】系统集成项目管理工程师-第3章 信息技术服务-3.4服务标准化

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

持续集成02--Linux环境更新/安装Java新版本

前言 在持续集成/持续部署&#xff08;CI/CD&#xff09;的旅程中&#xff0c;确保开发环境的一致性至关重要。本篇“持续集成02--Linux环境更新/安装Java新版本”将聚焦于如何在Linux环境下高效地更新或安装Java新版本。Java作为广泛应用的编程语言&#xff0c;其版本的更新对…

XLua原理(一)

项目中活动都是用xlua开发的&#xff0c;项目周更热修也是用xlua的hotfix特性来做的。现研究底层原理&#xff0c;对于项目性能有个更好的把控。 本文认为看到该文章的人已具备使用xlua开发的能力&#xff0c;只研究介绍下xlua的底层实现原理。 一.lua和c#交互原理 概括&…

用程序画出三角形图案

创建各类三角形图案 直角三角形&#xff08;左下角&#xff09; #include <iostream> using namespace std;int main() {int rows;cout << "输入行数: ";cin >> rows;for(int i 1; i < rows; i){for(int j 1; j < i; j){cout << &…

003uboot目录分析和两个阶段

我们都知道s3c2440是一个soc&#xff0c;内含cpu和各种控制器、片内的RAM&#xff0c;他的CPU是arm920t。 我们先来分析一下uboot原码的各个目录 1.uboot目录分析 board&#xff1a;board里存放的是支持各个开发板的文件&#xff0c;包括链接脚本 common: common目录中存放的…

graham 算法计算平面投影点集的凸包

文章目录 向量的内积&#xff08;点乘&#xff09;、外积&#xff08;叉乘&#xff09;确定旋转方向numpy 的 cross 和 outernp.inner 向量与矩阵计算示例np.outer 向量与矩阵计算示例 python 示例生成样例散点数据图显示按极角排序的结果根据排序点计算向量转向并连成凸包 基本…

set、map、multiset、multimap容器介绍和常用接口使用

文章目录 前言一、set容器二、multiset三、map四、multimap 前言 1、set、map、 multiset、 multimap都是基于红黑树实现的容器。 2、set、multiset都使用头文件#include<set>,map、multimap都是使用头文件#include<map> 一、set容器 1、set容器的介绍 C标准库中的…

pytest常用命令行参数解析

简介&#xff1a;pytest作为一个成熟的测试框架&#xff0c;它提供了许多命令行参数来控制测试的运行方式&#xff0c;以配合适用于不同的测试场景。例如 -x 可以用于希望出现错误就停止&#xff0c;以便定位和分析问题。–rerunsnum适用于希望进行失败重跑等个性化测试策略。 …

【BUG】已解决:AttributeError: ‘str‘ object has no attribute ‘get‘

已解决&#xff1a;AttributeError: ‘str‘ object has no attribute ‘get‘ 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c…

C++初学者指南-5.标准库(第一部分)--标准库查找算法

C初学者指南-5.标准库(第一部分)–标准库查找算法 文章目录 C初学者指南-5.标准库(第一部分)--标准库查找算法查找/定位一个元素findfind_iffind_if_notfind_last / find_last_if / find_last_if_notfind_first_of 查找范围内的子范围 search find_endstarts_withends_with 找到…

SpringBoot3 + Vue3 学习 Day 2

登入接口 和 获取用户详细信息的开发 学习视频登入接口的开发1、登入主逻辑2、登入认证jwt 介绍生成 JWT① 导入依赖② 编写代码③ 验证JWT 登入认证接口的实现① 导入 工具类② controller 类实现③ 存在的问题及优化① 编写拦截器② 注册拦截器③ 其他接口直接提供服务 获取用…

Web3D:WebGL为什么在渲染性能上输给了WebGPU。

WebGL已经成为了web3D的标配&#xff0c;市面上有N多基于webGL的3D引擎&#xff0c;WebGPU作为挑战者&#xff0c;在渲染性能上确实改过webGL一头&#xff0c;由于起步较晚&#xff0c;想通过这个优势加持&#xff0c;赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…

Webstorm-恢复默认UI布局

背景 在使用Webstorm的时候,有时候进行个性化设置,如字体、界面布局等. 但是设置后的效果不理想,想要重新设置回原来的模样,却找不到设置项. 这里提供一种解决方案,恢复默认设置,即恢复到最初刚下载好后的设置. 操作步骤 步骤一:打开setting 步骤二:搜索Restore Default,找到…

数学建模-----SPSS参数检验和非参数检验

目录 1.参数检验 1.1独立样本t检验案例分析 1.1.1查看数据编号 1.1.2确定变量所属类型 1.1.3选项里面的置信区间 1.1.4对于结果进行分析 1.2配对样本t检验案例分析 1.2.1相关设置 1.2.2分析结果 2.非参数检验 2.1对比分析 2.2非参数检验的方法 2.3案例分析 2.3.1相…

10道JVM经典面试题

1、 JVM中&#xff0c;new出来的对象是在哪个区&#xff1f; 2、 说说类加载有哪些步骤&#xff1f; 3、 JMM是什么&#xff1f; 4、 说说JVM内存结构&#xff1f; 5、 MinorGC和FullGC有什么区别&#xff1f; 6、 什么是STW? 7、 什么情况下会发生堆/栈溢出&#xff1f…

当“广撒网”遇上“精准定点”的鱼叉式网络钓鱼

批量网络钓鱼电子邮件活动倾向于针对大量受众&#xff0c;它们通常使用笼统的措辞和简单的格式&#xff0c;其中不乏各种拼写错误。而有针对性的攻击往往需要付出更大的努力&#xff0c;攻击者会伪装成雇主或客户向目标发送包含个人详细信息的个性化消息。在更大范围内采用这种…

大语言模型-文本检索任务基准 BEIR

BEIR (A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models) 文本检索任务的基准&#xff0c;使用18 个数据集为检索系统的零样本评估提出了一个标准化基准&#xff0c; BEIR 基准上在9个不同领域的检索任务评估 10 种不同的检索方法。 九个…