使用 Python BeautifulSoup 查找页数

2023-12-08

我想从 Steam 页面中提取总页码(本例中为 11)。我相信以下代码应该可以工作(返回 11),但它返回一个空列表。就像如果没有找到一样paged_items_paging_pagelink class.

import requests
import re
from bs4 import BeautifulSoup
r = requests.get('http://store.steampowered.com/tags/en-us/RPG/')
c = r.content
soup = BeautifulSoup(c, 'html.parser')


total_pages = soup.find_all("span",{"class":"paged_items_paging_pagelink"})[-1].text

如果你检查页面来源,你想要的内容是不可用的。这意味着它是通过Javascript动态生成的。

页码位于<span id="NewReleases_links">标签,但在页面源代码中 HTML 仅显示以下内容:

<span id="NewReleases_links"></span>

处理这个问题最简单的方法是使用Selenium.

但是,如果你查看页面源代码,就会发现文本Showing 1-20 of 213 results 可用。因此,您可以抓取它并计算页数。

所需的 HTML:

<div class="paged_items_paging_summary ellipsis">
    Showing 
    <span id="NewReleases_start">1</span>
    -
    <span id="NewReleases_end">20</span> 
    of 
    <span id="NewReleases_total">213</span> 
    results         
</div>

Code:

import requests
from bs4 import BeautifulSoup

r = requests.get('http://store.steampowered.com/tags/en-us/RPG/')
soup = BeautifulSoup(r.text, 'lxml')

def get_pages_no(soup):
    total_items = int(soup.find('span', id='NewReleases_total').text)
    items_per_page = int(soup.find('span', id='NewReleases_end').text)
    return round(total_items/items_per_page)

print(get_pages_no(soup))
# prints 11

(注意:我仍然建议使用 Selenium,因为该网站的大部分内容都是动态生成的。像这样抓取所有数据会很痛苦。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python BeautifulSoup 查找页数 的相关文章

随机推荐

  • 列表属性的空集合初始值设定项会导致 null

    When I 运行这段代码 它不初始化ThisIsAList正如我所期待的那样 到一个空集合 而不是ThisIsAList为空 void Main var thing new Thing ThisIsAList Console WriteL
  • Pandas 过滤串联的多个子字符串

    我需要过滤 a 中的行pandas数据帧 以便特定字符串列至少包含所提供的子字符串列表之一 子字符串可能包含不寻常 正则表达式字符 比较不应涉及正则表达式并且不区分大小写 例如 lst kdSj af aBC dsfa sdKaJg dks
  • 添加“代码”按钮到WordPresstinyMCE

    我一直在关注这个教程 很多人都喜欢它 http codex wordpress org TinyMCE Custom Buttons function myplugin addbuttons Don t bother doing this
  • 如何在 MVC 中使用 LabelFor 插入换行符

    我的模型中有 Display Name Check to enter
  • 内联 SVG 的重复(过滤器)ID

    创建带有滤镜的内联 SVG 时 我必须为滤镜定义一个 ID 当我自动生成几个略有差异的内联SVG时 第一个图像的过滤器优先 覆盖 后续图像的过滤器 因为重复过滤器 ID 现场演示 更清晰 http jsfiddle net 9wqgS p
  • Automapper复杂类型映射异常

    我正在尝试为新模块实现 AutoMapper 我在网站上有 MVC 模型 我正在研究它 它看起来像这样 public class MvcModel public Params Params get set public Steps Step
  • 在参数化类中使用参数时获取不同的(非默认)小部件(holoviz 参数面板)

    我使用参数化类来构建面板仪表板 我想用一个交叉选择器但是当查看库 Param 提供的选项时 此选择器似乎不可用 似乎只有一个列表选择器 我如何使用 Param 获取此 CrossSelector import param import pa
  • 自动装配两个实现相同接口的 bean - 如何将默认 bean 设置为自动装配?

    背景 我有一个 Spring 2 5 Java Tomcat 应用程序 有下面这个bean 在整个应用程序的很多地方都用到了它 public class HibernateDeviceDao implements DeviceDao 以及以
  • 函数内部的静态变量不能保存对单例的引用

    我注意到 PHP 中的单例有一个奇怪的行为 除了举一个例子之外 没有更好的方法来解释这一点 假设我有以下单例类 class Singleton protected function construct Deny direct instant
  • 这些是什么 ASCII 字符?

    我有两个字符需要在 php 字符串中进行搜索和替换 不知何故 这些不同于 有谁知道我可以使用什么函数从 php 字符串中删除这些内容 这就是当有人在 Outlook 中向您发送电子邮件时会发生的情况 因此请小心 因为您完全错过了这些单引号的
  • iOS copyWithZone 仅在使用设备时无法识别选择器

    我正在开发一个 iPad 应用程序 仅当 sqlite 数据库中有某些数据时才会启动初始屏幕 如下所示 if int MyStore sharedInstance mode lt 0 self connectionSettingsViewC
  • 为 ggplot - R 安排数据帧格式

    我想将数据从宽格式重塑为长格式 以便我可以使用 ggplot 来创建图表 我在正确排列数据时遇到一些问题 到目前为止 我从 27 个数据帧的列表开始我的流程 仅向您展示前 10 个数据帧 gt str NDVI stat List of 2
  • SyntaxError:Object.parse(本机)npm 请求输入意外结束

    您好 我不明白为什么会出现此错误 我认为收到数据后就会执行回调 知道这是从哪里来的吗 多谢 节点错误 SyntaxError Unexpected end of input at Object parse native 我解析主体的答案 然
  • SQL 代理:设置最大执行时间

    下午 我在 MS 2K8 BI 服务器上运行多个 SQL 代理作业 其中一些每天运行一次 其他每小时运行一次 每两分钟运行一次 另一个进程的心跳监视器 还有一个应用程序可以全天候每隔几分钟导入一次数据 有时 更新和报告的某些组合会发生冲突
  • 使用 Facebook sdk 发布嵌入的 YouTube 链接

    当您有意在 FB 上分享 YouTube 链接时 它会自动将 YouTube 播放器嵌入到您的墙上 如下所示 但是 当我尝试使用发布相同的视频时FB sdk HelloFacebookSampleActivity gt postStatus
  • 如何从 C# winform 应用程序检索屏幕分辨率?

    如何检索我的 C Winform 应用程序运行时的屏幕分辨率 您是否只需要标准应用程序使用的区域 即排除 Windows 任务栏和停靠窗口 如果是这样 请使用Screen WorkingArea 属性 否则 使用屏幕边界 如果有多个显示器
  • 嵌入式 Facebook Like-Box 不允许我设计它。为什么?

    我正在尝试在我的网站页面上放置一个 Facebook Like Box 然后通过我自己的 CSS 对其进行样式设置 主要是为了增加 div stream content 的高度 这个想法是让 FB feed 充当新闻 feed 但我不希望用
  • Rails 卷曲语法

    我可以从我的 Rails 应用程序运行以下命令 Hash from xml x curl d admin true http localhost 8888 rescue nil 现在我想用变量替换 admin true 如果我有 x adm
  • 为什么数组大小为 1 [重复]

    这个问题在这里已经有答案了 可能的重复 C 编程语言中数组的大小 我正在尝试编写一个函数 如果数组中有值则返回 1 这是代码 int inArrayInt int iVal int iArray int i int arrayL sizeo
  • 使用 Python BeautifulSoup 查找页数

    我想从 Steam 页面中提取总页码 本例中为 11 我相信以下代码应该可以工作 返回 11 但它返回一个空列表 就像如果没有找到一样paged items paging pagelink class import requests imp