Python 请求分页

news2024/9/20 16:29:28

文章目录

    • 什么是 Python 中的分页
    • 带有下一个按钮的 Python 分页
    • 没有下一个按钮的 Python 分页
    • 无限滚动的 Python 分页
    • 带有加载更多按钮的分页


在本文中,我们将了解分页以及如何克服 Python 中与分页相关的问题。 读完本文后,我们将能够了解 Python 分页以及如何使用它处理问题。


什么是 Python 中的分页

使用任何 Web 应用程序时,最重要的是显示的内容不仅限于并强制适合单个页面。 不过,它应该显示在多个页面上,这有助于获得更好的用户体验。

这种将内容分布在多个页面上的过程称为分页。 必须记住,在实施分页概念时,我们应考虑总页数、内容类型、所讨论主题的分类表示以及页面所遵循的数字顺序等因素。


带有下一个按钮的 Python 分页

分页并不总是限于用户看到的内容,即网站的前端,但有时对后端使用的 API 进行分页也很重要。 我们可以使用几个 Python API 和模块来处理分页问题。

我们将从使用请求模块开始。 此外,如果我们有兴趣从网页中查找内容,我们将使用 BeautifulSoup4。

此外,我们将使用 lxml 库来方便地访问上述模块。

示例代码:

pip install requests beautifulsoup4 lxml

上面的行将帮助我们通过 beautifulsoup4 库安装请求模块。

import requests
from bs4 import BeautifulSoup
findurl = 'http://books.toscrape.com/catalogue/category/books/fantasy_19/index.html'
getresponse = requests.get(findurl)
getsoup = BeautifulSoup(getresponse.text, "lxml")
footer_element = getsoup.select_one('li.current')
print(footer_element.text.strip())

输出:

Page 1 of 3

前面的代码片段将帮助我们从代码中给出的网页 URL 中捕获页脚。 您可以根据需要更改 URL。

请求库在 URL 上发送一个获取请求。

对于 soup 对象,我们使用 CSS 选择器。 例如,如果我们想移动到另一个元素,我们可以在 soup.select_one(name) 中输入名称。

上面的代码适用于包含下一步导航按钮的网页。 除了这种情况,对于使用无限滚动和加载更多按钮的网站,也可以在没有下一个按钮的情况下完成分页。


没有下一个按钮的 Python 分页

一些网站使用 1、2、3、4 等数字在不同页面之间滚动,而不是下一步按钮。 这使用户更容易在多个页面之间导航。

在这种情况下,我们将尝试从第一页检索数据,然后使用循环进行导航。

示例代码:

# Handling pages with the Next button
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
def process_pages():
    get_url = 'https://www.test.com/doc/791526.Zaloz-zbroje'
    response = requests.get(get_url)
    soup = BeautifulSoup(response.text, 'lxml')
    page_link_el = soup.select('.pgr_nrs a')
    # process the first page
    for link_el in page_link_el:
        link = urljoin(get_url, link_el.get('href'))
        response = requests.get(link)
        soup = BeautifulSoup(response.text, 'lxml')
        print(response.url)
        # process remaining pages
if __name__ == '__main__':
    process_pages()

输出:

https://www.test.com/doc/791526.Zaloz-zbroje/2
https://www.test.com/doc/791526.Zaloz-zbroje/3
https://www.test.com/doc/791526.Zaloz-zbroje/4

无限滚动的 Python 分页

顾名思义,在这种类型的分页中,我们没有下一个按钮或页码,而是不断滚动以查看所需的内容。

这种分页的一个简单示例可以是任何电子商务网站。 我们一次显示一定数量的产品,向下滚动后,我们将显示下一个产品。

必须记住,在这种情况下,我们不必处理多页 URL。

对 API 的异步调用将帮助我们在移动时获得更多内容。


带有加载更多按钮的分页

这种分页方法类似于无限滚动方法,但只有当我们想知道如何移动到下一页时才会有所不同。

在这种情况下,我们有一定数量的请求要完成,只要我们点击加载更多按钮,这些请求就会不断减少。 例如,网站上的图片总数为 500,我们一次显示 30 张图片。

因此,每次单击“加载更多”按钮时,我们都会看到接下来的 30 张图像,并且计数器会从总共 500 张图像中减去这 30 张。 让我们考虑下面的示例以便更好地理解。

示例代码:

import requests
from bs4 import BeautifulSoup
url = 'http://test.org/wp-json/smthstapi/v1/objects?tag=938&page={}'
null=0
page_counter = 1
while True:
    getresponse = requests.get(url.format(page_counter), headers=null)
    data = getresponse.json()
    # Process data
    # ...
    print(getresponse.url)  # only for debug
    if data.get('remaining') and int(data.get('remaining')) > 0:
        page_counter += 1
    else:
            break

输出:

https://test.org/wp-json/smthstapi/v1/objects?tag=938&page=1
https://test.org/wp-json/smthstapi/v1/objects?tag=938&page=2
https://test.org/wp-json/smthstapi/v1/objects?tag=938&page=3
https://test.org/wp-json/smthstapi/v1/objects?tag=938&page=4
https://test.org/wp-json/smthstapi/v1/objects?tag=938&page=5
https://test.org/wp-json/smthstapi/v1/objects?tag=938&page=6
https://test.org/wp-json/smthstapi/v1/objects?tag=938&page=7
...

上面的代码将继续打印相同的 URL 并递增页码,直到我们到达可用页面的末尾。 对于上面的代码,总页数是 34。

我们希望您发现本文有助于理解 Python 中分页的概念。

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

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

相关文章

TensorHouse仓库介绍

目录 1 TensorHouse介绍 2 说明性例子 3模型列表 4基本组件 5方法 6参考 7后续计划 1 TensorHouse介绍 代码仓库:GitHub - ikatsov/tensor-house: A collection of reference machine learning and optimization models for enterprise operations: marketi…

插入排序-C语言实现

🥰前言 🍔在学数据结构的第一节课就知道了数据结构课程是要管理并且学会操作数据,当然操作数据首先想到的就是数据的排序,排过顺序的数据的使用价值才够大。前面我们学习了顺序表也学习了链表等等,这些就是储存数据的方…

哲学家就餐问题

哲学家就餐问题是一个著名的一类同步问题,在并发编程领域,常用来解释线程同步的问题。 问题描述:五位哲学家围坐在一张圆桌旁,每个哲学家面前有一碗米饭和一只筷子。这五个哲学家都是苦于无法同时持有两只筷子,因为只…

Autosar软件组件-Application Layer介绍和SWC(Software Component)类型

参考前文Autosar-软件架构,可知整个架构从上到下分层依次为:应用层(Application Software Layer),运行时环境(Runtime Environment,RTE),基础软件层(Basic Software Layer,BSW),微控制器(Microcontroller)。 Application Layer由各种AUTOSAR Software Componen…

【备战秋招】每日一题:华东师范大学保研机试-2022-整数排序

为了更好的阅读体检,可以查看我的算法学习博客华东师范大学保研机试-2022-整数排序 题目内容 输入若干个int类型整数,将整数按照位数由大到小排序,如果位数相同,则按照整数本身从小到大排序。 例如, 输入:10 -3 1 23 89 100 9…

【第四次】21级计科计算机组成原理课外练习

【第四次】21级计科计算机组成原理课外练习 一、判断题二、单选题三、多选题四、填空题五、程序填空题 一、判断题 1-1 设机器数字长8位(含1位符号位),若机器数BAH为原码,算术右移一位得到的结果为 9D H 。 T F 1-2 ALU中采用双…

spring 反射,BigDecimal,自定义注解的使用(aop)

反射 利用反射调用它类中的属性和方法时&#xff0c;无视修饰符。 获取Class类的对象&#xff08;三种方式&#xff09; Class.forName(“全类名”) &#xff08;推荐使用&#xff09;类名.class对象.getClass() 反射获取构造方法Constructor<?>[] getConstructors()…

Android 逆向之脱壳实战篇

作者&#xff1a;37手游安卓团队 前言 这篇文章比较干&#xff0c;比较偏实战&#xff0c;看之前建议先喝足水&#xff0c;慎入。 在学脱壳之前&#xff0c;我们先来复习一下&#xff0c;什么时候是加固&#xff1f; 加固本质上就是对 dex 文件进行加壳处理&#xff0c;让一些…

信号三大阶段之储存信号

目录 一、 信号三大阶段 二、信号储存相关概念 三、 理解概念 四、信号储存原理 五、信号集操作函数 一、 信号三大阶段 二、信号储存相关概念 实际执行信号的过程被称为信号递达&#xff08;Delivery&#xff09;。信号从产生到递达之间的状态被称为信号未决&#xff08;…

【Linux】初步认识Linux系统

Linux 操作系统 主要作用是管理好硬件设备&#xff0c;并为用户和应用程序提供一个简单的接口&#xff0c;以便于使用。 作为中间人&#xff0c;连接硬件和软件 常见操作系统 桌面操作系统 WindowsmacOsLinux 服务器操作系统 LinuxWindows Server 嵌入式操作系统 Linux …

从零搭建一台基于ROS的自动驾驶车-----1.整体介绍

系列文章目录 北科天绘 16线3维激光雷达开发教程 基于Rplidar二维雷达使用Hector_SLAM算法在ROS中建图 Nvidia Jetson Nano学习笔记–串口通信 Nvidia Jetson Nano学习笔记–使用C语言实现GPIO 输入输出 Autolabor ROS机器人教程 文章目录 系列文章目录前言一、小车底盘二、激…

Redis入门(三)

第5章 Redis的相关配置(redis.conf) 1&#xff09;计量单位说明,大小写不敏感 # 1k > 1000 bytes # 1kb > 1024 bytes # 1m > 1000000 bytes # 1mb > 1024*1024 bytes # 1g > 1000000000 bytes # 1gb > 1024*1024*1024 bytes # # units are case insensiti…

如何安装Apache服务

目录 什么是Apache 第一步 关闭防火墙和安全机制 第二步 系​统​上​定​义 SELinux 最​高​级​别 第三步 导入对应的依赖包并解包 第四步 安装依赖环境 第五步 移动相关文件 第六步 编译安装 第七步 编译 第八步 备份配置文件 第九步 优化执行路径 第十步 添加…

S32K324芯片学习笔记-实时控制系统-eMIOS

文章目录 Enhanced Modular IO Subsystem (eMIOS)eMISO配置通道类型通道配置BCTU Interface 简介功能框图Unified channels (UC)Buffered modesUC control and datapath diagramUC modesGPIO模式SAIC (Single Action Input Capture)模式Single Action Output Capture (SAOC) mo…

AI自动写代码:GitHub copilot插件在Idea的安装和使用教程

GitHub Copilot 是微软与OpenAI共同推出的一款AI编程工具&#xff0c;基于GitHub及其他网站的源代码&#xff0c;根据上文提示为程序员自动编写下文代码&#xff0c;可以极大地提高编写代码的效率。 先看看ChatGpt是怎么回答Copilot的功能特点&#xff1a; 给大家简单提取一…

【go】新手go module 踩坑入门rc_server

go1.3 后废弃了GOPATH 但是gomodule 要自己设置 :go env -w GO111MODULE=auto Microsoft Windows [版本 10.0.22621.1848] © Microsoft Corporation。保留所有权利。 C:\Users\zhangbin>adb connect 127.0.0.1:7555 connected to 127.0.0.1:7555 C:\Users\zhangbin&…

【计算机通识】未来的计算机

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、未来的计算机 2.1、光子计算机 2.2、生物计算机 2.3、量子计算机 3、总结 1、缘起 自然界中的一切事物都是处…

3d重建+神经渲染

3d重建 基于深度相机(结构光、TOF、双目摄像头)的三维重建基于图像的三维重建&#xff1a;深度学习基于视觉几何的传统三维重建&#xff1a;这种三维重建方法研究时间比较久远&#xff0c;技术相对成熟。主要通过多视角图像对采集数据的相机位置进行估计&#xff0c;再通过图像…

经典同步问题之哲学家就餐

文章目录 一&#xff1a;问题描述方案一&#xff1a;方案二&#xff1a;方案三&#xff1a; 一&#xff1a;问题描述 五个哲学家共用一张圆桌&#xff0c;分别坐在周围的五张椅子上&#xff0c;在圆桌上有五个碗和五只筷子&#xff0c;他们的生活方式是交替的进行思考和进餐。…

2023年测试岗前景?为什么要做自动化测试?8年测试总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 自动化测试是把以…