从网站抓取温度传感器数据的动态更新

2024-02-24

我写了以下Python代码:

from bs4 import BeautifulSoup
import urllib2

url= 'http://www.example.com'
page = urllib2.urlopen(url)
soup = BeautifulSoup(page.read(),"html.parser")
freq=soup.find('div', attrs={'id':'frequenz'})
print freq

结果是:

<div id="frequenz" style="font-size:500%; font-weight: bold; width: 100%; height: 10%; margin-top: 5px; text-align: center">tempsensor</div>

当我使用网络浏览器查看此网站时,网页显示动态内容,而不是字符串“tempsensor”。温度值每秒自动刷新。所以网页中的内容是 自动用数值替换字符串“tempsensor”。

我现在的问题是:如何让Python显示更新后的数值?如何获取自动更新的值tempsensor在美丽汤?


抱歉,不,单独使用 BeautifulSoup 是不可能的。

问题在于 BS4 并不是一个完整的网络浏览器。它只是一个 HTML 解析器。它不解析 CSS,也不解析 Javascript。

一个完整的网络浏览器至少可以做四件事:

  1. 连接到网络服务器,获取数据
  2. 解析 HTML 内容和 CSS 格式并呈现网页
  3. 解析 Javascript 内容并运行它。
  4. 提供用户交互,如浏览器导航、HTML 表单和 JavaScript 程序的事件 API

还不确定吗?现在看看你的代码。 BS4 甚至不包括第一步,即获取网页,为此您必须使用urllib2.

动态站点通常包含在浏览器上运行并定期更新内容的 Javascript。 BS4 不提供这一点,因此您不会看到它们,而且仅使用 BS4 也永远不会看到它们。为什么?由于上述第 (3) 项,下载并执行 Javascript 程序并未发生。它会发生在 IE、Firefox 或 Chrome 中,这就是为什么这些浏览器可以显示动态内容,而仅 BS4 的抓取则不会显示动态内容。

PhantomJS http://phantomjs.org/ and CasperJS http://casperjs.org/提供更机械化的浏览器,通常可以运行支持动态网站的 JavaScript 代码。但 CasperJS 和 PhantomJS 是用服务器端 Javascript 编程的,而不是 Python。

显然,有些人使用 PyQt4 内置的浏览器来执行此类动态屏幕截图任务 https://stackoverflow.com/questions/22028775/tried-python-beautifulsoup-and-phantom-js-still-cant-scrape-websites,隔离部分 DOM,并将其发送到 BS4 进行解析。这可能会提供 Python 解决方案。

在评论中,@Cyphase 建议您想要的确切数据可能在不同的 URL 上可用,在这种情况下,可能会使用 urllib2/BS4 获取并解析它。这可以通过仔细检查站点上运行的 Javascript 来确定,特别是您可以查找setTimeout and setInterval安排更新,或者ajax,或 jQuery 的.load从后端获取数据的函数。用于更新动态内容的 JavaScript 将usually仅从同一网站的后端 URL 获取数据。如果他们使用 jQuery$('#frequenz')指的是div,在JS中搜索this可能会找到更新div的代码。如果没有 jQuery,JS 更新可能会使用document.getElementById('frequenz').

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

从网站抓取温度传感器数据的动态更新 的相关文章

  • 转义 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 标签内是否
  • 如何使用角度材料在具有可扩展行的表格中创建嵌套垫表

    我有以下数据 id c9d5ab1a subdomain wing domain aircraft part id c9d5ab1a info mimetype application json info dependent parent
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • 具有 100% 高度行和 Internet Explorer 9 的表格

    我有以下示例 div style height 150px background color AAAAFF div
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo

随机推荐

  • Laravel 5.5 将迁移与生产数据库合并

    希望我能很好地解释这一点 我有一个 Laravel 应用程序 已经投入生产了一分钟 所以 我有一堆包含很多更改的迁移文件 我想合并这些迁移文件而不丢失数据库 我的方式think这会起作用 将所有生产表迁移到所需状态 将所有迁移文件合并为所需
  • 如何列出 mongo shell 中的所有数据库?

    我知道怎么做列出特定数据库中的所有集合 https stackoverflow com questions 8866041 how to list all collections in the mongo shell 但是如何在 Mongo
  • mysqld_safe UNIX 套接字文件的目录“/var/run/mysqld”不存在

    使用 mysqld safe 启动 mysql 服务器 5 7 17 时 出现以下错误 2017 02 10T17 05 44 870970Z mysqld safe Logging to var log mysql error log 2
  • 从 XMLHttpRequest 对象中删除 cookie

    我正在使用 jquery 进行 ajax 调用 例如 ajax url path to webservice asmx beforeSend function xmlHTTPRequest modify headers here remov
  • 分页计算算法

    我正在尝试计算分页 var pagination total result length per page itemsPerPage required current page currentPage required last page
  • 用回形针圆角

    如何用回形针创建圆角 我找到了这个解决方案 它创建了使用convert options用回形针实现圆角 http loo no 2009 08 09 rounded corners with paperclip 但它不适用于 Rails 3
  • 跨浏览器事件对象规范化?

    我正在寻找有关事件对象的事件规范化的良好资源 我想自己做 但我总觉得我会错过一些东西 这是我到目前为止所掌握的 如果我错过了什么 请告诉我 var eFix function e e e window event e target e ta
  • Android,Cometd:Cometd 发送备用消息

    我正在开发一个 Android 应用程序 在其中实现聊天功能 考虑到 Cometd 的使用 聊天速度相当快 但由于某种原因 Cometd 正在发送备用消息 如果它发送message 1 则不发送message 2 然后发送3 依此类推 这是
  • 在 Svelte 中传递道具

    我正在尝试使用 Svelte Svelte Routing 和 Firestore 实现一个相当标准的博客应用程序 但我认为我误解了 props 在组件之间传递方式的基本部分 我的初始代码基于 Fireship io 上的优秀教程 该教程按
  • git amend 后的 git 合并冲突 - “你的分支和‘origin/master’已经分歧”

    发生的情况是这样的 最近提交到远程主控之后 我对本地存储库做了一个小小的更改 I add git commit amend并留下与 HEAD 相同的提交消息 我尝试将回购推向mastergit push 现在我明白了 On branch m
  • 如何在不使用VerifyExtraction的情况下将MSSQLServer数据库提取为.dacpac?

    我想使用 Server Management Studio 提取 MSSQLServer 数据库的数据库架构 我使用提取命令 提取数据层应用程序 数据库中有对另一个数据库的多个引用 因此 我收到以下错误 提取数据库时出错 数据包架构模型验证
  • 如何从小型、可重用的查询组成实体框架查询?

    我的应用程序中有一些 相当多余的 查询 如下所示 var last30Days DateTime Today AddDays 30 from b in Building let issueSeverity from u in Users w
  • Android Hello-World 编译错误:Intellij 找不到 aapt

    我正在尝试在 Ubuntu 12 04 中使用 IntelliJ 设置 Android 开发环境 我创建了一个 Android 应用程序模块 但是当我尝试构建时 出现以下错误 android apt compiler 无法运行程序 home
  • 为什么我的相机预览显示水平而不是垂直?

    在我的 Android 相机应用程序中 如果我将屏幕固定为横向 那么在横向模式下 它似乎必须被看到 但如果我将其固定为肖像 则相机预览将显示为水平方向 为什么会发生这种情况 以及解决方案是什么 Camera Parameters param
  • 正确使用封装在类内属性中的字段

    我应该使用哪种场景来更改类方法 属性内的私有字段 public class Example private int intVar 0 private string stringVar string Empty public int IntV
  • 是否可以在 Zeppelin Notebook 中设置全局变量?

    我正在尝试使用 Zeppelin 笔记本创建多段落仪表板 我希望使用仪表板的人们只需输入某些参数一次 例如 如果我正在制作包含有关不同网站的信息的仪表板 则仪表板用户只需选择他们想要的特定网站一次 整个多段落仪表板就会更新 这可能吗 如何在
  • 将 XFDF 与 PDF 表单合并以创建最终的 PDF 服务器端?

    这就是我目前所拥有的 用户提交表单数据并获得 下载 PDF 链接 该链接指向动态生成 XFDF 文件的脚本 并在设置适当的标头等后输出 XFDF 文件 XFDF 文件指向受密码保护的 PDF 这是使用 XFDF 数据填写字段的通用 PDF
  • 如何使用Flask-Migrate进行数据库迁移?

    我在使用 Flask Migrate 升级 降级数据库时遇到问题 有两张桌子 User and Post 由以下类定义 class User db Model id db Column db Integer primary key True
  • Google 日历 V3 在本地环境之外使用时挂起

    我正在为 net 版本的 Google Calendar API 开发一个包装器 身份验证相当简单并且在本地 localhost port 运行良好 UserCredential credential GoogleWebAuthorizat
  • 从网站抓取温度传感器数据的动态更新

    我写了以下Python代码 from bs4 import BeautifulSoup import urllib2 url http www example com page urllib2 urlopen url soup Beauti