Beautiful Soup 找不到我想要的 HTML 部分

2024-04-21

我使用 BeautifulSoup 进行网页抓取已经有一段时间了,这是我第一次遇到这样的问题。我试图在代码中选择数字 101,172,但即使我使用 .find 或 .select,输出始终只有标签,而不是数字。我之前曾处理过类似的数据收集工作,没有遇到任何问题

<div class="legend-block legend-block--pageviews">
      <h5>Pageviews</h5><hr>
      <div class="legend-block--body">
        <div class="linear-legend--counts">
          Pageviews:
          <span class="pull-right">
            101,172
          </span>
        </div>
        <div class="linear-legend--counts">
          Daily average:
          <span class="pull-right">
            4,818
          </span>
        </div></div></div>

I used:

res = requests.get(wiki_page, timeout =None)
soup = bs4.BeautifulSoup(res.text, 'html.parser')
ab=soup.select('span[class="pull-right"]')
#print(i)
print(ab)

output:

[<span class="pull-right">\n<label class="logarithmic-scale">\n<input 
class="logarithmic-scale-option" type="checkbox"/>\n        Logarithmic scale      
</label>\n</span>, <span class="pull-right">\n<label class="begin-at- 
zero">\n<input class="begin-at-zero-option" type="checkbox"/>\n        Begin at 
zero      </label>\n</span>, <span class="pull-right">\n<label class="show- 
labels">\n<input class="show-labels-option" type="checkbox"/>\n        Show 
values      </label>\n</span>]

另外,我正在寻找的数据数量是动态的,所以我不确定Javascript是否会影响BeautifulSoup


尝试这个:

from bs4 import BeautifulSoup as bs

html='''<div class="legend-block legend-block--pageviews">
      <h5>Pageviews</h5><hr>
      <div class="legend-block--body">
        <div class="linear-legend--counts">
          Pageviews:
          <span class="pull-right">101,172
          </span>
        </div>
        <div class="linear-legend--counts">
          Daily average:
          <span class="pull-right">
            4,818
          </span>
        </div></div></div>'''
soup = bs(html, 'html.parser')
div = soup.find("div", {"class": "linear-legend--counts"})
span = div.find('span')
text = span.get_text()
print(text)

output:

101,172

简单地说:

soup = bs(html, 'html.parser')
result = soup.find("div", {"class": "linear-legend--counts"}).find('span').get_text()

EDIT:

由于OP发布了另一个问题,该问题可能与此问题重复,因此他找到了答案。对于正在寻找类似问题答案的人,我将发布该问题的已接受答案。可以找到here https://stackoverflow.com/a/51985365/5430055.

如果您使用 requests.get 检索页面,则 javascript 代码将不会被执行。因此应改用硒。它将模仿用户在浏览器中打开页面的行为,因此将执行 js 代码。

要启动 selenium,您需要安装pip install selenium。然后要检索您的物品,请使用以下代码:

from selenium import webdriver

browser = webdriver.Firefox()
# List of the page url and selector of element to retrieve.
wiki_pages = [("https://tools.wmflabs.org/pageviews/?project=en.wikipedia.org&platform=all-access&agent=user&range=latest-20&pages=Star_Wars:_The_Last_Jedi",
               ".summary-column--container .legend-block--pageviews .linear-legend--counts:first-child span.pull-right"),]
for wiki_page in wiki_pages:
    url = wiki_page[0]
    selector = wiki_page[1]
    browser.get(wiki_page)
    page_views_count = browser.find_element_by_css_selector(selector)
    print page_views_count.text
browser.quit()

NOTE:如果您需要运行无头浏览器,请考虑使用Py虚拟显示 https://pypi.org/project/PyVirtualDisplay/(一个包装器Xvfb https://en.wikipedia.org/wiki/Xvfb) 运行无头 WebDriver 测试,请参阅 '如何在 Xvfb 中运行 Selenium? https://stackoverflow.com/questions/6183276/how-do-i-run-selenium-in-xvfb' 了解更多信息。

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

Beautiful Soup 找不到我想要的 HTML 部分 的相关文章

  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • 转义 h 轮廓

    因此 我一直在尝试找出在被较低级别的标题吸引后添加内容的最佳方法是什么 section h1 Title of Section h1 h2 Related 1 h2 h2 Related 2 h2 p I NEED THIS TO BE P
  • HTML W3C 有效元素 - DIV 在 TD 内有效吗?

    我正在和一位同事争论 但找不到证据证明我们俩都是对的 我之前已经看过给定标签的有效元素列表 但只是无法再次找到它 有人能指出我正确的方向吗 我对 XHTML 很好奇 但分歧具体在于 DIV 标签在 HTML 4 01 中的 TD 标签内是否
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • 为什么我的交互式图像仅在 Internet Explorer 上出现故障?

    我的问题 我为自己制作了一个图像地图 交互式图像 它在 Chrome safari 和 Firefox 上完美运行 然而 当我在可怕的互联网浏览器上尝试它时 它真的很糟糕 这些小点应该扩展到更大的盒子中 在互联网浏览器上它要么不起作用 要么
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message
  • 使用 CSS 折叠和展开元素

    我正在尝试构建一个页面 加载时仅可见标题 并且 当用户单击标题时 每个标题下方的表格会在隐藏和显示状态之间切换 我的限制是只能在 CSS 中执行此操作 这是我到目前为止想到的 https jsfiddle net Argoron c1ypx
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • 如何在 sed 命令中使用变量

    我有一个名为 text file1 txt 的文件 文件中的内容是 主题 C US O AAA OU QA OU 12345 OU TESTAPP 现在我想要实现的是如下内容 主题 C US O AAA QA 12345 TESTAPP 当
  • 洪水填充算法是否考虑了 alpha 且不会在抗锯齿线周围留下边缘?

    我已经实现了一个典型的洪水填充算法 当使用纯色时 它按预期工作 其中我使用 ARGB 分量之间的欧几里德距离来比较颜色 我的问题是 如果您在透明背景上绘制类似抗锯齿红线的内容 我的洪水填充算法将不会填充大多数半透明像素 从而在对象周围留下条
  • Google Assistant 更改表面不起作用

    嗨 大家好 我目前正在尝试使用 Dialogflow 为 Google Assistant 构建一个应用程序 在特定意图期间 我想将用户重定向到他的手机 使用扬声器时 因为该意图需要精确的键盘输入 正如文档中所说 我正在打电话askForN
  • 1&1 Windows 托管服务器 web.config URL 重写问题

    我面临与 1 1 托管的 Windows 服务器中的 URL 重写相关的问题 我正在尝试使用 web config 文件重写 url 但它根本不起作用 给我错误或 500 19 错误总结 HTTP 错误 500 19 内部服务器错误 无法访
  • C# Excel 文本到列问题

    您好 我在 C 中调用了文本到列函数 但结果并不像我想要的那样 我的工作表的第一个单元格中有这些数据 Guest 0 12 10 2010 03 46 34 PM 66082 如果我从 Excel 手动运行 文本到列 我就明白了 Guest
  • 如何查看两个 Hg 存储库之间不同的所有文件的列表?

    我有一个包含大量工作代码的存储库 我团队中的另一位开发人员有一段时间没有任何更新 然后提交了大约 5 个变更集 所以 现在我们有两个相隔近两周的头 该提示不起作用 但我的变更集可以 我想看看两个存储库之间有什么区别 而不必合并它们 因为我不
  • OCLinEcore 和 Regex 创建有效的 IPv4 字符串

    我有一个 Ecore 模型 我试图在其中添加一些 OCL 约束 当我尝试创建有效 IPv4 形式的属性 字符串 时 我的问题就出现了 我想我应该使用正则表达式 但我根本不知道如何在 OCLinEcore 上使用正则表达式 从 Eclipse
  • 按类别划分的直方图颜色

    我有一个 pandas 数据框 其中包含 2 列 height 和 class class 是一个包含 3 个值 1 2 和 5 的列 现在我想按类别制作高度数据和颜色的直方图 plot19 s vegetation height plot
  • ReSharper 混淆了我的视觉工作室 - 将视觉工作室重置为默认值

    我使用 ReSharper 来执行一些任务 然后卸载了它 因为它让我感到困惑 所有亮点和快速链接 我更喜欢 Visual Studio 的默认行为 卸载后 以前用红线下划线的编译错误现在根本没有下划线了 如何使用默认行为重置 Visual
  • 当计数为 1 时,有条件地将 T 从 Rc 移出

    有没有办法将物体从Rc
  • 为什么使用无效概念被视为格式错误

    新公布的草案中提到 expr prim req 6 https eel is c draft expr prim req 6 sentence 6 如果将模板参数替换为要求会 总是导致替换失败 程序格式错误 不 需要诊断 Example t
  • ASP.NET Core 授权重定向到错误的 URL

    我正在尝试运行一个映射了以下路由的 Web 应用程序 app UseMvc routes gt routes MapRoute default WoL controller Account action Login id 如果用户未经过身份
  • 带菜单的NSTableView,如何通过右键单击更改边框颜色?

    NSTableView 带有附加的 NSMenu 右键单击表视图后 将出现菜单 有了它 表视图将突出显示带有彩色边框的行 使用悬停表演示 https developer apple com library mac samplecode Ho
  • 使用 javascript 对外部 url 发出 Ajax 请求

    我正在尝试对外部 url 执行 ajax 请求 现在我在 php 中执行此操作 as data array TokenID gt tokenid APIKey gt api key EcryptedData gt encrypted dat
  • 什么是未处理的承诺拒绝?

    为了学习 Angular 2 我正在尝试他们的教程 我收到这样的错误 node 4796 UnhandledPromiseRejectionWarning Unhandled promise rejection r ejection id
  • 如何使用 keywindow 无边框窗口(覆盖)覆盖全屏游戏?

    我创建的应用程序有时会显示带有标签和文本框的叠加层 它工作得很好 但我需要它即使在其他应用程序处于全屏模式且处于活动状态时也能工作 对于覆盖 我创建了自定义窗口类并覆盖canBecomeKeyWindow让无边框窗口成为关键窗口的方法 简单
  • 从项目中删除 Pod - xcode

    我正在尝试从我的项目中删除 pod 在我删除所有文件和所有内容后 我收到此消息 diff Podfile lock No such file or directory diff Manifest lock No such file or d
  • 为什么我在使用 img 标签时收到 403 禁止?

    当尝试使用时 img src Ginger jpeg 我收到 403 错误 这是请求的页面 http laponderosakennels com beagles memories ginger index html http lapond
  • 当舞台处于全屏模式时 JavaFX 弹出窗口隐藏

    I am trying to popup a dialog over my fullscreen primary stage in javafx When I create my popup it is unexpectedly hidde
  • Beautiful Soup 找不到我想要的 HTML 部分

    我使用 BeautifulSoup 进行网页抓取已经有一段时间了 这是我第一次遇到这样的问题 我试图在代码中选择数字 101 172 但即使我使用 find 或 select 输出始终只有标签 而不是数字 我之前曾处理过类似的数据收集工作