《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/49153.shtml

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

相关文章

2024论文精读:利用大语言模型(GPT)增强上下文学习去做关系抽取任务

文章目录 1. 前置知识2. 文章通过什么来引出他要解决的问题3. 作者通过什么提出RE任务存在上面所提出的那几个问题3.1 问题一&#xff1a;ICL检索到的**示范**中实体个关系的相关性很低。3.2 问题二&#xff1a;示范中缺乏解释输入-标签映射导致ICL效果不佳。 4. 作者为了解决上…

【Git】(基础篇七)—— IntelliJIDEA集成Git

InteliJ IDEA集成Git 现在有很多的集成工具帮助我们写代码&#xff0c;使用这些工具可以帮助我们加速写代码&#xff0c;很多工具也可以集成git&#xff0c;使用图形工具管理git&#xff0c;相信了解了底层运行逻辑的你能够很快地上手使用这些工具&#xff0c;本文以InteliJ I…

7 Vue3

相比 Vue2 1. 优点 vue3支持vue2的大多数特性&#xff0c;实现对vue2的兼容vue3对比vue2具有明显的性能提升 打包大小减少41%初次渲染快55%&#xff0c;更新快133%内存使用减少54% 更好的支持TypeScript使用Proxy代替defineProperty实现响应式数据 2. 性能提升的原因 静态标…

jmeter-beanshell学习11-从文件获取指定数据

参数文件里的参数可能过段时间就不能用了&#xff0c;需要用新的参数。如果有多个交易&#xff0c;读不同的参数文件&#xff0c;但是数据还是一套&#xff0c;就要改多个参数文件。或者只想执行参数文件的某一行数据&#xff0c;又不想调整参数文件顺序。 第一个问题目前想到…

Ant Design Vue中日期选择器快捷选择 presets 用法

ant写文档的纯懒狗 返回的是一个day.js对象 范围选择时可接受一个数组 具体参考 操作 Day.js 话不多说 直接上代码 <a-range-pickerv-model:value"formData.datePick"valueFormat"YYYY-MM-DD HH:mm:ss"showTime:presets"presets"change&quo…

(前缀和) LeetCode 238. 除自身以外数组的乘积

一. 题目描述 原题链接 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&…

WebRTC通话原理(SDP、STUN、 TURN、 信令服务器)

文章目录 1.媒体协商SDP简介 2.网络协商STUN的工作原理TURN工作原理 3.信令服务器信令服务器的主要功能信令服务器的实现方式 1.媒体协商 比如下面这个例子 A端与B端要想通信 A端视频采用VP8做解码&#xff0c;然后发送给B端&#xff0c;B端怎么解码&#xff1f; B端视频采用…

【论文共读】【翻译】ShuffleNet v1:一种用于移动设备的极其高效的卷积神经网络

[原文地址] https://arxiv.org/pdf/1707.01083 [翻译] 0. 摘要 我们介绍了一种计算效率极高的CNN架构&#xff0c;称为ShuffleNet&#xff0c;该架构专为计算能力非常有限的移动设备&#xff08;例如&#xff0c;10-150 MFLOPs&#xff09;而设计。新架构利用了两个新操作&am…

Ubuntu 22.04.4 LTS (linux) Tomcat 下载 安装配置详细教程

1 官网下载 下载链接 2 ubuntu 服务器安装 #下载 wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.91/bin/apache-tomcat-9.0.91.tar.gz #解压 tar zxvf apache-tomcat-9.0.91.tar.gz sudo mv apache-tomcat-9.0.91/ /data/tomcat #配置环境变量 sudo vi /etc/profil…

WebGoC题解(13) 狐猬编程:GoC L4 结业测试 第4题 找木柴

题目描述 小明今天找了n跟木柴&#xff0c;但是木柴太多了&#xff0c;小明只能拿走m根木柴&#xff0c;小明希望拿走的木柴都是剩下的木柴中最长的&#xff0c;小明还画出以下图形 例如 输入 5 3 10 20 30 40 50 小明要拿走30 40 50 这3根木柴 从大到小画出以下图形 矩形的宽…

linux cpu 占用超100% 分析。

感谢: https://www.cnblogs.com/wolfstark/p/16450131.html 总结&#xff1a; 查看进程中各个线程占用百分比 top -H -p <pid> 某线程100%了 说明 任务处理不过来 会卡 但是永远不可能超100% 系统监视器里面看到的是 所有线程占用的 总和会超100%。 所以最好的情况是&…

MATLAB基础:字符串、元胞数组

今天我们继续学习MATLAB中的字符串、元胞和结构 字符串 由于MATLAB是面向矩阵的&#xff0c;所以字符串的处理可以用矩阵的形式实现 字符串的赋值与引用 假设变量a&#xff0c;将用单引号引起来的字符串赋值给它&#xff0c; a清心明目, b(a[4;-1;1]) 在这里&#xff0c;…

如何检查我的网站是否支持HTTPS

HTTPS是一种用于安全通信的协议&#xff0c;是HTTP的安全版本。HTTPS的主要作用在于为互联网上的数据传输提供安全性和隐私保护。通常是需要在网站安装部署SSL证书来实现网络数据加密传输&#xff0c;安全加密功能。 那么如果要检查你的网站是否支持HTTPS&#xff0c;可以看下…

云计算实训11——web服务器的搭建、nfs服务器的搭建、备份静态文件、基于linux和windows实现文件共享

一、搭建web服务器 1.关闭firewall和selinux 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 停用selinux setenforce 0 配置文件中让sellinux不再启动 vim /etc/selinux/config SELINUXpermissive 2.编辑dns配置文件 vim /etc/resolv.conf nameserver 114.…

Go基础编程 - 11 - 函数(func)

接口&#xff08;interface&#xff09; 函数1. 函数定义1.1. 函数名1.2. 参数列表1.3. 返回值列表 2. 匿名函数3. 闭包、递归3.1 闭包3.1.1 函数、引用环境3.1.2 闭包的延迟绑定3.1.3 goroutine 的延迟绑定 3.2 递归函数 4. 延迟调用&#xff08;defer&#xff09;4.1 defer特…

2024-07-22 Unity AI行为树1 —— 框架介绍

文章目录 1 行为树2 行为树驱动方式3 行为树结点分类3.1 控制节点3.2 执行节点 4 行为树与状态机比较 本文章参考 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 行为树 ​ 行为树&#xff08;Behavior Tree&#xff0c;BT&#xff09;在游戏 AI 中是一种用于控制…

微软蓝屏事件:网络安全与系统稳定性的反思与前瞻

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

javascript 的执行上下文与作用域

目录 1. 初步了解 上下文&#xff08;context&#xff09;2. 全局上下文(global context)3. 上下文栈 (context stack)4. 作用域链( scope chain)5. 作用域(scope)6. 作用域链增强7. 变量声明7.1 var 声明变量7.2 let 声明变量7.3 const 常量声明 1. 初步了解 上下文&#xff0…

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

目录 0 专栏介绍1 数值优化&#xff1a;共轭梯度法2 基于共轭梯度法的轨迹优化2.1 障碍约束函数2.2 曲率约束函数2.3 平滑约束函数 3 算法仿真3.1 ROS C实现3.2 Python实现 0 专栏介绍 &#x1f525;课程设计、毕业设计、创新竞赛、学术研究必备&#xff01;本专栏涉及更高阶的…

CAS乐观锁原理

1、什么是CAS&#xff1f; compare and swap也就是比较和交换&#xff0c;他是一条CPU的并发原语。 他在替换内存的某个位置的值时&#xff0c;首先查看内存中的值与预期值是否一致&#xff0c;如果一致&#xff0c;执行替换操作。 这个操作是一个原子性操作。 Java中基于Un…