《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.rhkb.cn/news/382841.html

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

相关文章

Linux 13:网络编程1

1. 预备知识 1-1. 理解源IP地址和目的IP地址 在IP数据包头部中&#xff0c;有两个IP地址&#xff0c;分别叫做源IP地址&#xff0c;和目的IP地址。 我们光有IP地址就可以完成通信了嘛&#xff1f;想象一下发qq消息的例子&#xff0c;有了IP地址能够把消息发送到对方的…

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

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

Adaboost集成学习 | Matlab实现基于LSTM-Adaboost长短期记忆神经网络结合Adaboost集成学习多输入单输出时间序列预测

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Adaboost集成学习 | Matlab实现基于LSTM-Adaboost长短期记忆神经网络结合Adaboost集成学习时间序列预测(股票价格预测) 模型设计 步骤1: 数据准备 收集和整理历史数据。确保数据集经过适当的预处理,如归一…

自己开发软件实现网站抓取m3u8链接

几天前一个同学说想下载一个网站的视频找不到连接&#xff0c;问我有没有什么办法,网站抓取m3u8链接 网页抓取m3u8链接。当时一听觉得应该简单&#xff0c;于是说我抽空看看。然后就分析目标网页&#xff0c;试图从网页源码里找出连接&#xff0c;有的源代码直接有,但是有的没有…

【Linux学习 | 第1篇】Linux介绍+安装

文章目录 Linux1. Linux简介1.1 不同操作系统1.2 Linux系统版本 2. Linux安装2.1 安装方式2.2 网卡设置2.3 安装SSH连接工具2.4 Linux和Windows目录结构对比 Linux 1. Linux简介 1.1 不同操作系统 桌面操作系统 Windows (用户数量最多)MacOS ( 操作体验好&#xff0c;办公人…

golang 解压带密码的zip包

目录 Zip文件详解ZIP 文件格式主要特性常用算法Zip格式结构图总览Zip文件结构详解数据区本地文件头文件数据文件描述 中央目录记录区&#xff08;核心目录记录区 &#xff09;中央目录记录尾部区 压缩包解压过程方式1 通过解析中央目录区来解压方式2 通过读取本地文件头来解压两…

mq基础入门

前言 黑马商城导入了mq依赖 但是没有改service发消息 因为下单业务一直有问题 所以先没改 作业时间不够也没处理 1.异步调用 就是所谓的发短信 可以不用立即恢复 比如下单业务 下了单更新信息 就相当于发个消息通知一下 不用立即更改 但是支付就比较重要 不需要因为故障导…

谷粒商城实战笔记-48~49-商品服务-API-三级分类-查询-树形展示三级分类数据-前端优化

文章目录 一&#xff0c;48-商品服务-API-三级分类-查询-树形展示三级分类数据1&#xff0c;创建商品服务命名空间2&#xff0c;商品服务增加配置3&#xff0c;网关增加商品服务的路由配置4&#xff0c;前端树形展示5&#xff0c;测试 二&#xff0c;49-商品服务-API-三级分类-…

Prometheus配置alertmanager告警

1、拉取镜像并运行 1、配置docker镜像源 [rootlocalhost ~]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://dfaad.mirror.aliyuncs.com"] } [rootlocalhost ~]# systemctl daemon-reload [rootlocalhost ~]# systemctl restart docker2、…

VTK源码分析:Type System

作为一款开源跨平台的数据可视化代码库&#xff0c;VTK以其清晰的流水线工作方式、丰富的后处理算法、异种渲染/交互方式&#xff0c;而被众多CAx软件选作后处理实施方案。而异种渲染/交互方式的实现&#xff0c;主要是倚重于VTK的类型系统&#xff0c;因此&#xff0c;有必要对…

从安装Node到TypeScript到VsCode的配置教程

从安装Node到TypeScript到VsCode的配置教程 1.下载Node安装包&#xff0c; 链接 2.双击安装包&#xff0c;选择安装路径&#xff0c;如下&#xff1a; 3.一直点击下一步&#xff0c;直至安装结束即可&#xff1a; 这个时候&#xff0c;node会默认配置好环境变量&#xff0c;并且…

抖音客户端一面

C | 字节抖音客户端一面 Http握手过程 1. 客户端问候(Client Hello) 客户端向服务器发送一个“问候”消息&#xff0c;其中包含客户端支持的SSL/TLS版本、加密算法、压缩方法以及一个随机数。 version 版本号,https也有版本号哦TLS 1.0、TLS 1.1、TLS 1.2等等 random 随机数…

(11)Python引领金融前沿:投资组合优化实战案例

1. 前言 本篇文章为 Python 对金融的投资组合优化的示例。投资组合优化是从一组可用的投资组合中选择最佳投资组合的过程&#xff0c;目的是最大限度地提高回报和降低风险。 投资组合优化是从一组可用的投资组合中选择最佳投资组合的过程&#xff0c;目的是最大限度地提高回报…

JUnit 单元测试

JUnit 测试是程序员测试&#xff0c;就是白盒测试&#xff0c;可以让程序员知道被测试的软件如何 &#xff08;How&#xff09;完成功能和完成什么样&#xff08;What&#xff09;的功能。 下载junit-4.12和hamcrest-core-1.3依赖包 相关链接 junit-4.12&#xff1a;Central …

【Qt】窗口

文章目录 QMainWindow菜单栏工具栏状态栏浮动窗口对话框自定义对话框Qt内置对话框QMessageBox QMainWindow Qt中的主窗口以QMainWindow表示&#xff0c;其总体结构如下&#xff1a; 菜单栏 菜单栏MenuBar&#xff0c;可包含多个菜单Menu&#xff0c;每个菜单也可以包含多个菜…

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

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

Java——————接口(interface) <详解>

1.1 接口的概念 在现实生活中&#xff0c;接口的例子比比皆是&#xff0c;比如&#xff1a;笔记本电脑上的USB接口&#xff0c;电源插座等。 电脑的USB口上&#xff0c;可以插&#xff1a;U盘、鼠标、键盘...所有符合USB协议的设备 电源插座插孔上&#xff0c;可以插&#xff…

若依Vue前后端分离版如何部署(windows)(超详细)

一、项目环境准备 下面是项目所需要准备的环境 Node.js redis 1、Node.js下载 下面进入官网可以下载Node.js — 在任何地方运行 JavaScript (nodejs.org)https://nodejs.org/zh-cn 下载完成安装后&#xff0c;需要配置环境变量&#xff0c;首先复制以下nodejs的安…

springboot系列十一:Thymeleaf

文章目录 官方文档基本介绍Thymeleaf机制说明Thymeleaf语法表达式运算符th属性迭代条件运算使用Thymeleaf th属性需要注意点 Thymeleaf综合案例需求说明思路分析代码实现 作业布置 官方文档 在线文档: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 离线…

css黑色二级下拉导航菜单

黑色二级下拉导航菜单https://www.bootstrapmb.com/item/14816 body { font-family: Arial, sans-serif; margin: 0; padding: 0; }nav { background-color: #000; /* 导航背景色为黑色 */ }.menu { list-style-type: none; margin: 0; padding: 0; overflow: hidden; }.menu l…