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 时间戳?

    我需要一个自纪元以来的毫秒 ms 时间戳 这应该不难 我确信我只是缺少一些方法datetime或类似的东西 实际上微秒 s 粒度也很好 我只需要亚 1 10 秒的计时 例子 我有一个每 750 毫秒发生一次的事件 假设它检查灯是否打开或关闭
  • 如何隐藏 URL 中的 ID

    我以前在 Stack Overflow 上见过这类问题 但没有一个真正有帮助 我也用谷歌搜索过 但没有骰子 我想知道如果用户单击选项卡本身是否可以隐藏 URL 中的 ID 这是网页 www planet nu dev new experia
  • argparse 更改参数的定义

    我按如下方式设置参数解析器 parser argparse ArgumentParser parser add argument point help enter a point e g 2 3 4 parser parse args po
  • Selenium 上的切换窗口

    我在 Python 中使用 Selenium 和 PhantomJS 我需要打开一个新窗口并控制它 出于测试目的 我这样做 from selenium import webdriver driver webdriver PhantomJS
  • 如何用方向键移动div

    我想使用 jQuery 用箭头键移动 div 所以右 左 下 上 找到了我想要完成的演示here http atomicrobotdesign com blog htmlcss move objects around the canvas
  • python matplotlib 使用按钮事件添加和删除图形中的文本

    我试图在调用button press event 时将文本添加到鼠标指针位置的图形中 并在调用button release event 时将其删除 我已成功添加文本 但无法将其删除 这是我使用的代码的一部分 def onclick even
  • 如何在 Python for 循环中获取 GAE ndb 中当前记录的密钥?

    我目前有一个网页 其中显示数据存储中的记录列表以及编辑链接 我想从数据库转换它 至新开发银行 我是 Python 和 GAE 新手 当前代码 tbody for listtype in listtypes tr td listtype Li
  • 单击 div 中的图像时如何翻转该 Div?

    好吧 我对编写 Javascript 知之甚少 我可以对其进行一些编辑 并且涉足了 CSS3 动画 我将向您展示我正在努力实现的目标 然后在下面进行解释 网站布局将是这样的 https i stack imgur com RMb4R jpg
  • Buildozer Numpy RuntimeError:工具链损坏:无法链接简单的 C 程序

    用 Python 编写我的第一个 Android 应用程序并使用 Buildozer 对其进行打包 因为稍后在项目中需要使用numpy 所以我尝试打包以下测试代码 import numpy import kivy kivy require
  • 如何列出静态链接的 python 版本中可用的所有 openssl 密码?

    在python 2 7 8到2 7 9升级中 ssl模块从使用更改为 DEFAULT CIPHERS DEFAULT aNULL eNULL LOW EXPORT SSLv2 to DEFAULT CIPHERS ECDH AESGCM D
  • Tkinter:通过多处理启动进程会创建不需要的新窗口

    我计划围绕数值模拟编写一个小型 GUI 这就是我现在使用 Tkinter 的原因 模拟应在单独的进程中从 GUI 启动 为了玩一下 我定义了一个函数 random process 来生成成对的 randn 数字 这应该是一个真正的模拟过程
  • Python 上每个系数具有特定约束的多元线性回归

    我目前正在数据集上运行多元线性回归 起初 我没有意识到我需要限制自己的体重 事实上 我需要有特定的正权重和负权重 更准确地说 我正在做一个评分系统 这就是为什么我的一些变量应该对音符产生积极或消极的影响 然而 当运行我的模型时 结果不符合我
  • 将文本数据作为表单中的文件发布

    是否可以从 html 表单中发布一些作为文件输入类型的字符串的 XML 数据 情况是我有一个像这样的表格 form action target php method post enctype multipart form data gt
  • 为什么行框之间有空格,而不是由于半行距?

    在下面的代码示例中 您将看到垂直流动的之间有空白spans是 每个之间有空白line box 我想首先声明这与之间的差距无关inline block框 甚至是结果半领先 https www w3 org TR CSS21 visudet h
  • 如何使用 SymPy 求给定一阶导数的 n 阶导数?

    Given some f and the differential equation x t f x t how do I compute x n t in terms of x t For example given f x t sin
  • 访问 Scrapy 内的 django 模型

    是否可以在 Scrapy 管道内访问我的 django 模型 以便我可以将抓取的数据直接保存到我的模型中 我见过this https scrapy readthedocs org en latest topics djangoitem ht
  • 使用 pyspark 计算所有可能的单词对

    我有一个文本文档 我需要找到整个文档中重复单词对的可能数量 例如 我有下面的word文档 该文档有两行 每行用 分隔 文档 My name is Sam My name is Sam My name is Sam My name is Sa
  • Spark (Python) 中的 Kolmogorov Smirnov 测试不起作用?

    我正在 Python Spark ml 中进行正态性测试 看到了我的结果think是一个错误 这是设置 我有一个标准化的数据集 范围 1 到 1 当我做直方图时 我可以清楚地看到数据不正常 gt gt gt prices norm hist
  • matplotlib imshow() 和像素强度

    我试图了解矩阵的值是如何输入到 matplotlib 的imshow 函数确定灰度模式下像素的强度 考虑示例代码 import random import matplotlib pyplot as plt import matplotlib
  • 捕获 SQLAlchemy 异常

    我可以使用什么捕获 SQLAlechmy 异常的上层异常 gt gt gt from sqlalchemy import exc gt gt gt dir exc ArgumentError CircularDependencyError

随机推荐

  • 如何在 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 输出始终只有标签 而不是数字 我之前曾处理过类似的数据收集工作