使用脚本或工具仅获取 HTML 元素

2023-12-19

我正在尝试获取大量状态信息,这些信息在网站中编码,主要在“ head >”元素内。

我知道我可以使用wget or curl或 python 获取整个页面。但我不想给服务器带来太多不必要的压力(页面本身相当大/复杂)。

有没有什么方法可以只获取头元素?

我认为除了检查 html 标头之外,代理服务器还执行其他操作。

只是为了澄清:我不搜索 html-headers,只搜索 html-<head>.


不可能只加载之间的数据<head>标签,因为服务器在发送请求的页面之前必须解析该页面。

一个可能的解决方案是读取几个字节,直到</head>找到标签。

以下内容如下n来自源的字节并检查字符串是否</head>已经包括了。如果是这样,字节将转换为string并修剪以使结果包含标签<head> and </head>以及它们之间的数据。否则继续读取n字节直到</head>被发现。

import urllib.request


def get_head_tag_data(url, n=512):
    """Read n bytes form source until '</head> is included. Trim result to
       '<head> ... </head>' and return it as string."""

    # open resource
    with urllib.request.urlopen(url) as site:
        # read n bytes until `buff` includes "</head>"
        data = b''
        i = 1
        while True:
            buff = site.read(n)
            data += buff
            if b'</head>' in buff:
                break
            elif buff == b'':
                raise AttributeError('Not head-tag found.')
            i += 1

    print('{} bytes read'.format(n*i))

    # cast to string
    data = str(data)

    # detect tag position
    start_tag = data.find('<head>')
    end_tag = data.find('</head>') + 7

    return data[start_tag:end_tag]


tag_data = get_head_tag_data('https://stackoverflow.com', n=256)

请注意,此函数不会检查可能的错误,例如,如果没有</head> tag.

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

使用脚本或工具仅获取 HTML 元素 的相关文章

随机推荐

  • 如何将h1和h2写在同一行?

    我有一个页面 我只想制作一个标题 该标头是一个 h1 文本左对齐 并且 h2 右对齐 在同一行 在它们之后 hr 到目前为止 我的代码如下所示 如果您测试它 您会发现它是错误的 h1 align left Title h1 h2 align
  • 如何以整数形式反转 RGB 颜色?

    给定 32 位无符号整数形式的 RGB 颜色 例如 0xFF00FF 如何反转它 获得负颜色 而不使用位移操作提取其各个分量 我想知道是否可以仅使用按位运算 AND OR XOR 更准确地说 使用最少指令数的算法是什么 我觉得就是这么简单
  • 如何从 JSESSIONID 加载 Java HttpSession?

    我想获得JavaHttpSession通过 JSESSIONID 是否可以 如果是 怎么办 您基本上需要手动将它们全部收集在一个Map https docs oracle com en java javase 17 docs api jav
  • android应用程序可以检查手机的版本吗

    我想编写一个使用动态壁纸的应用程序 仅版本 7 及更高版本支持此功能 应用程序是否可以检查 Android 手机的版本 并根据版本运行不同的代码 例如使用动态壁纸或静态背景 你有一个代码示例吗 这需要特殊权限吗 假设您需要 Android
  • 使用pauseOnConnect 通过 https 传递连接

    我正在使用pauseOnConnect选项开启net createServer 允许我将连接传递给我使用集群创建的工作人员 server net createServer pauseOnConnect true function conne
  • 使用Spring boot和javafx会消耗大量内存吗?

    我愿意在我的 JavaFX 应用程序中使用 Spring boot 技术 以获得其依赖注入的优势 但我想知道对内存的影响 因为你知道任何带有 组件 符号的类都会被加载到 MetaSpace 因为 Spring boot 会从中创建一个静态对
  • Laravel 的 5.3 通行证和 api 路线

    我正在使用 Laravel Framework 版本 5 3 9 新下载的内容没有通过作曲家添加任何内容 除了 laravel passport 1 0 我做了中建议的所有事情docs https laravel com docs mast
  • Visual Studio 2010 代码覆盖率 - 找不到由检测实用程序创建的备份文件

    我尝试在 VS 2010 中运行代码覆盖率 但遇到以下错误 不生成覆盖范围信息 代码覆盖率就地检测 无法完全备份二进制文件 MyProject dll 找不到由检测实用程序创建的备份文件 MyProject dll orig 检查为测试运行
  • 使用 PHP/MySQL 比较标签组以查找相似性/分数

    如何将一组标签与数据库中另一个帖子的标签进行比较以获取相关帖子 我想做的是将帖子上的一组标签与另一个帖子的标签进行比较 但不是每个标签单独 假设您想根据帖子中的标签获取真正相关的项目 然后从最相关到 最不相关的顺序显示它们 每次都必须显示三
  • 如何在 C# 中发出 HTTP 请求 [重复]

    这个问题在这里已经有答案了 我如何在 Windows 中用 C 发出卷曲请求或 我想使用此参数发出网络请求 它应该收到有效的响应 request curl http www1 bloomingdales com api store v2 s
  • Spark阶段交换的意义

    谁能解释一下我的 Spark DAG 中的 Spark 阶段中交换的含义 我的大部分阶段要么以交换开始 要么以交换结束 1 WholeStageCodeGen gt 交换 2 交换 gt WholeStageCodeGen gt SortA
  • 离散傅里叶变换:如何正确使用 fftshift 和 fft

    我想对 numpy 数组 Y 进行数值计算 为了进行测试 我使用高斯函数 Y exp x 2 符号 傅立叶变换为 Y 常数 exp k 2 4 import numpy X numpy arange 100 100 Y numpy exp
  • 如何重新启动流星

    If I close the browser tab and press Ctrl Z to exit the current running meteor process how do I start meteor again to re
  • 如何在 SQL Server 2008 中将图像字段中的 varbinary 值更新为 null?

    我上传了一张图像并存储到数据库的图像字段中 该图像存储为 0xFFD8FFE 当我尝试用 null 更新上面的内容时 出现了一个异常 数据类型 image 和 varbinary max 在等于运算符中不兼容 我想将上面的值更改为空 只需使
  • 基于唯一列的行求和 awk

    我正在寻找一种更优雅的方法来执行此操作 对于超过 100 列 awk a 1 4 b 1 5 c 1 6 d 1 7 e 1 8 f 1 9 g 1 10 END for i in a print i a i b i c i d i e i
  • 如何在MS Word中自定义引文样式?

    要在 MS Word 中创建自定义引文样式 我按照此网页中的说明进行操作https msdn microsoft com en us vba word vba articles create custom bibliography styl
  • 显示一个元素并在 1 秒后隐藏它

    我有以下元素 div class text hide Hello SO div 我用 jQuery 展示它 如下所示 text addClass show removeClass hide So my div 是表演 我现在希望它在 1 秒
  • 切换到较新版本的 android ndk 时未定义的模块

    我正在尝试从 ndk r11c 升级到 ndk r14 当我运行 r14 时 出现错误 Android NDK 模块 myJNI 依赖模块 png jpeg log 在我的 Android 版本中 LOCAL SHARED LIBRARIE
  • setcookie() 不会在 Google Chrome 中设置 cookie

    我正在阅读一些有关如何设置 cookie 的 PHP 教程 我注意到 cookie 在 FF4 和 IE9 上成功设置 但在 Chrome 11 0 696 60 中没有设置 PHP 文件由 XAMPP localhost 提供 我尝试了
  • 使用脚本或工具仅获取 HTML 元素

    我正在尝试获取大量状态信息 这些信息在网站中编码 主要在 head gt 元素内 我知道我可以使用wget or curl或 python 获取整个页面 但我不想给服务器带来太多不必要的压力 页面本身相当大 复杂 有没有什么方法可以只获取头