php 抓取并输出给定​​标签中的特定值或数字

2023-12-31

所以我对 php 很陌生。但在一些帮助下,我已经弄清楚如何抓取具有像 h1 class=____ 这样的标签标识符的网站

更好的是,我已经弄清楚如何输出我想要的精确单词或值,只要它由空格分隔即可。例如,如果给定的标签名称 的输出为“30 个球”,我可以指定 echo[0],并且只会输出 30 个球。这太棒了。

不过,我遇到了一个问题,我是否正在尝试提取一个不以空格分隔的值。所以我的意思是,假设我想要“-34.89”作为输出(更准确地说,无论网站上的占位符中的数字是什么,因为源网站上的数字可能会随着时间的推移而变化)。

但是,我得到的输出是“-34.89dowjonesstockchange”。那里没有空格。

我该怎么做才能输出-34.89?或者,无论某一天该位置上的数字是什么。在上面的输出中必须有某种方式来表示,仅输出 ex 的值 [0,1,2,3,4,5],就值的数量而言,这将是 -34.89。

下面是一个网站上的测试示例,输出由“ ”空格确定的单词和值。这几乎是我所需要的,但缺少这种更精确的方式。

// this function is a scraping function for ethereumchange
function getEthereumchange(){
    $doc = new DOMDocument;

    // We don't want to bother with white spaces
    $doc->preserveWhiteSpace = false;


    $doc->strictErrorChecking = false;
    $doc->recover = true;

    $doc->loadHTMLFile('https://coinmarketcap.com/');



    $xpath = new DOMXPath($doc);

    $query = "//tr[@id='id-ethereum']";




    $entries = $xpath->query($query);
    foreach ($entries as $entry) {
        $result = trim($entry->textContent); 
        $ret_ = explode(' ', $result);
        //make sure every element in the array don't start or end with blank
        foreach ($ret_ as $key=>$val){
            $ret_[$key]=trim($val);
        }
        //delete the empty element and the element is blank "\n" "\r" "\t"
        //I modify this line
        $ret_ = array_values(array_filter($ret_,deleteBlankInArray));
            
        //echo the last element
        file_put_contents(globalVars::$_cache_dir . "ethereumchange", 
$ret_[7]);

    }

太感谢了。


如果你想使用第三方库,你可以使用https://github.com/rajanrx/php-scrape https://github.com/rajanrx/php-scrape

<?php

use Scraper\Scrape\Crawler\Types\GeneralCrawler;
use Scraper\Scrape\Extractor\Types\MultipleRowExtractor;

require_once(__DIR__ . '/../vendor/autoload.php');
date_default_timezone_set('UTC');

// Create crawler
$crawler = new GeneralCrawler('https://coinmarketcap.com/');

// Setup configuration
$configuration = new \Scraper\Structure\Configuration();
$configuration->setTargetXPath('//table[@id="currencies"]');
$configuration->setRowXPath('.//tbody/tr');
$configuration->setFields(
    [
        new \Scraper\Structure\TextField(
            [
                'name'  => 'Name',
                'xpath' => './/td[2]/a',
            ]
        ),
        new \Scraper\Structure\TextField(
            [
                'name'  => 'Market Cap',
                'xpath' => './/td[3]',
            ]
        ),
        new \Scraper\Structure\RegexField(
            [
                'name'  => '% Change',
                'xpath' => './/td[7]',
                'regex' => '/(.*)%/'
            ]
        ),
    ]
);

// Extract  data
$extractor = new MultipleRowExtractor($crawler, $configuration);
$data = $extractor->extract();
print_r($data);

将打印出以下内容:

Array
(
    [0] => Array
        (
            [Name] => Bitcoin
            [Market Cap] => $42,495,710,233
            [% Change] => -1.09
            [hash] => 76faae07da1d2f8c1209d86301d198b3
        )

    [1] => Array
        (
            [Name] => Ethereum
            [Market Cap] => $28,063,517,955
            [% Change] => -8.10
            [hash] => 18ade4435c69b5116acf0909e174b497
        )

    [2] => Array
        (
            [Name] => Ripple
            [Market Cap] => $11,483,663,781
            [% Change] => -2.73
            [hash] => 5bf61e4bb969c04d00944536e02d1e70
        )

    [3] => Array
        (
            [Name] => Litecoin
            [Market Cap] => $2,263,545,508
            [% Change] => -3.36
            [hash] => ea205770c30ddc9cbf267aa5c003933e
        )
   and so on ...

我希望这对你有帮助:)

免责声明:我是这个库的作者。

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

php 抓取并输出给定​​标签中的特定值或数字 的相关文章

  • 在 JQuery ui 自动完成中显示图像

    我有一个带有 JQuery ui 自动完成功能的脚本 可以完美运行 有一个显示用户名字和姓氏的搜索过程 但在我的数据库中 还有用户的图片 我想将其显示在带有名字和姓氏的建议中 数据库中pic包含图片url 剧本 function searc
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • 如何将 JSON 数据从 Android 发送到 php url?

    我想将登录信息从我的应用程序发送到 php url 因为这我的应用程序将崩溃 任何人都可以帮助我解决这个问题 这是我的服务器登录方法 我想将数据发送到此登录方法 Method public method login Parameters 3
  • 我应该在 PHP 代码中使用断言吗?

    一位同事添加了assert http php net assert在我们的库中 在我本来会使用 if 语句并引发异常的地方执行几次命令 在此之前我什至从未听说过断言 以下是他如何使用它的示例 assert isset this gt rec
  • 具有挑战性的问题 - 使用 PHP 对 XML 数据进行排序

    我有 xml 文件 其中包含大量产品数据 我需要根据我的字段 ProductRange 的数据对我的产品进行排序 ProductRange urldecode GET Range XML 文件数据
  • 为什么我的浮点数大于 1 时在 MYSQL 中存储为 .9999?

    我将进程时间作为 float 4 4 存储在 MySQL 数据库中 start time microtime TRUE things happen in my script end time microtime TRUE process t
  • Composer 无法下载文件

    我正在尝试在命令行上使用作曲家 php composer phar update php composer phar install php composer phar self update php composer phar selfu
  • 在PHP中,如何在表格中显示数组内容

    如果我在 MySQL 客户端中进行选择 我将得到如下所示的输出 mysql gt select FROM group LIMIT 2 group id group supergroup id group deletable group la
  • 安装 OCI8:如何纠正“使用未定义常量 OCI_COMMIT_ON_SUCCESS”错误?

    我正在尝试在 RedHat 服务器 RHEL7 上为我的 Apache 服务器安装 OCI8 此时 当我尝试使用 Symphony 连接到我的服务器时 出现以下错误 异常 ErrorException 使用未定义的常量 OCI COMMIT
  • 使用 php 脚本的电子邮件管道

    你好 我想将所有电子邮件 到达我的收件箱 转发到 php 脚本并检索电子邮件内容并将其保存在文件中 因此 我正确地添加了具有管道路径的电子邮件转发器 转发地址 电子邮件受保护 cdn cgi l email protection 管道到程序
  • php 检查文件是否存在于外部域中(从子域访问)

    我有一个网站http www reelfilmlocations co uk http www reelfilmlocations co uk 上述网站有一个管理区域 其中上传图像并在 uploads images 目录的子文件夹中创建不同
  • 通过 PHP 连接到 socket.io(nodejs)

    我需要通过 php 连接到 websocket 发送数据并立即断开连接 无需等待套接字的响应 我用了大象io http elephant io 但更新库后不起作用 请告诉我如何通过 PHP 连接到 websocket 我也遇到了这个问题 学
  • 将 PayPal 返回 URL 设置为 localhost

    我正在尝试集成 Paypal 并且在此过程中使用沙箱 我按照以下问题中接受的答案的步骤进行操作 设置 PayPal 返回 URL 并使其自动返回 https stackoverflow com questions 7642895 setti
  • PHP 的 mb_internal_encoding 实际上是做什么的?

    根据 PHP 网站 http www php net manual en function mb internal encoding php它这样做 coding 是用于 HTTP 输入的字符编码名称 字符编码转换 HTTP输出字符编码 转
  • Oracle Blob 在 PHP 页面中作为 img src

    我有一个网站当前使用文件服务器上的图像 这些图像显示在页面上 用户可以根据需要拖放每个图像 这是使用 jQuery 完成的 图像包含在列表中 每张图片都非常标准 img src network path image png height 8
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • Laravel 意外错误“类用户包含 3 个抽象方法...”

    在 Laravel 上编写我的身份验证应用程序时 我遇到了一个以前从未见过的错误 我已经集思广益了近一个小时来解决这个问题的原因 但仍然找不到解决方案 Error User 类包含 3 个抽象方法 因此必须声明为抽象方法或实现其余方法 Il
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • 为什么 LinkedIn v2 Share API 在任何 v2/shares 端点上给出权限不足的错误?

    当我调用任何 v2 LinkedIn 共享 API 端点时 例如https api linkedin com v2 socialActions https api linkedin com v2 socialActions share UR
  • preg_match 所有以@开头的单词?

    我对正则表达式不太确定 所以我不得不问你 如何用 PHP 判断字符串中是否包含以 开头的单词 例如我有一个像 This is for codeworxx 这样的字符串 我很抱歉 但我没有任何起点 希望你能帮忙 谢谢 萨沙 好的 谢谢你的结果

随机推荐

  • 在 Mathematica 中求解二元递归方程,这可能吗?

    我尝试使用RSolve求解二变量递归方程数学 但它只是重复我输入的内容 是否可以求解两个变量递归方程数学 也许您应该在问题中包含方程式 因为您可能只是使用RSolve错误地 数学可以解一些二变量递推方程 但不是全部 有时免费套餐Guess
  • HTML 源代码中没有嵌套链接元素的嵌套超链接区域

    我想要一些看起来和行为都像大矩形 整页宽 内的超链接的东西 这也是超链接 下面是它应该是什么样子的 ASCII 艺术表示 Some text link 整个外部矩形 块元素 将成为超链接 在这个矩形内应该有一些文本 并且在该文本的末尾应该有
  • 手动实现bayern转RGB

    我正在尝试实现图像转换 Bayern Pattern gt RGB I uploaded this image 这是我的代码片段 import cv2 import numpy as np from matplotlib import py
  • 使用 Python Logging 记录出现两次的消息

    我正在使用 Python 日志记录 由于某种原因 我的所有消息都出现了两次 我有一个配置日志记录的模块 BUG It s outputting logging messages twice not sure why it s not the
  • pcap_pkthdr 是做什么用的?

    代码片段来自here https www winpcap org docs docs 40 2 html group wpcap tut6 html void packet handler u char param const struct
  • 如何使用 .NET Core 从 nuget 从命令行下载包?

    微软软件包Linux 上的 NET Core https learn microsoft com en us nuget tools cli ref install对于Ubuntu 我目前正在使用它 我现在想安装Json NET https
  • Spring:POJO的@Autowired,不由Spring管理[重复]

    这个问题在这里已经有答案了 我使用 Autowired 在 POJO 中注入一些服务 这些服务注册为 Bean 如果一旦 POJO 由 Spring 管理 它也在 Spring Config 上注册为 Bean 那么注入服务就没有问题 但是
  • 在 Linux 中将文本文件中的空格替换为逗号

    我需要编辑一些文本文件 来自sar 并将它们转换为 CSV 文件 我需要使用 sed 或 awk 函数 Linux 中的简单 shell 脚本 更改每个空格 可能是输出中数字之间的制表符 谁能帮我 我使用的每个命令根本没有改变文件 我试过g
  • 如何使滚动条在有角度的材料中始终可见?

    所以目前 我正在使用角度材料及其默认滚动 但我认为它是完美的滚动条 用作滚动条的滚动设计 但只有当用户尝试滚动页面 div 时才会显示滚动 我尝试阅读 Angular Material 的滚动 api 但没有可以在此处使用的属性 我已经把o
  • Selenium 中的 WebDriver 和 WebElement 有什么区别?

    Selenium 中的 WebDriver 和 WebElement 有什么区别 示例代码 WebDriver driver new FirefoxDriver driver get http www google com WebEleme
  • 反应本机 PIP

    我需要将画中画模式添加到反应本机应用程序 iOS 中 但我不知道如何去做 我看到这是react native video 的一个功能 但我对视频使用了不同的模块 所以我只能将画中画添加为单独的功能 任何包含有关如何设置的详细信息的文档 博客
  • Puppeteer 流程​​逻辑,检查导航是否发生(与等待)

    寻找一些反馈 在 Puppeteer 中 我想检查导航是否发生 如果发生则执行某些操作 否则如果未发生则执行其他操作 例如重试 我想出的两种方法是 if await page url finalURL let t 0 busy while
  • Selenium WebDriver Click() 在 IE9 中失败

    我看过很多其他类似的帖子 不幸的是无法解决这个问题 所以这里 我正在使用 Selenium WebDriver C 实现 版本 2 15 来驱动一个相当简单的网页 该页面包含一个表单 其中有两个用于用户名和密码的 以及一个用于提交表单的 我
  • 使用 tidyverse 和 broom 进行许多回归:相同的因变量,不同的自变量

    此链接显示了在我们具有相同的自变量但可能有许多不同的因变量的情况下如何回答我的问题 使用 broom 和 tidyverse 对不同的因变量进行回归 https stackoverflow com questions 51642146 us
  • Magento 2:重新索引不起作用

    我做不到重新索引 in 玛根托2 谷歌之后我得到了解决方案We can reindex with shell command php dev shell indexer php reindexall 但它给出了错误 Could not op
  • 无法使用 C# 客户端反序列化日期时间属性 Neo4j

    我正在尝试使用 C 客户端从 Neo4j 中获取强类型对象 这一切都有效 直到我添加DateTime财产 我已成功将数据插入 Neo4j 数据库 并且可以使用控制台查看它 我还可以查询数据 但无法返回任何强类型对象 因为反序列化似乎失败 我
  • Linux C++:如何跨多个文件正确使用模板专业化?

    我有一个奇怪的问题 在 Windows 上 使用 Visual Studio 2010 以及 Intel 编译器 一切都按预期链接 但是 当我尝试在 Linux 上使用 CLang 3 0 编译代码时 它会编译 如果我只使用单个 CPP 文
  • 如何测量 Android wifi 连接中的上传/下载速度和延迟

    我需要一些 api 或操作代码 通过它们我可以测量 android 应用程序的上传 下载速度和 wifi 连接的延迟 您使用的是 2 2 Froyo 或更高版本吗 如果是这样 请在您的应用程序中导入流量统计信息 并在您的应用程序使用互联网时
  • C# 数据绑定不更新 WPF

    我正在尝试在后面的 C 代码而不是 XAML 中进行数据绑定 在 Expression Blend 2 中创建的 XAML 绑定到我的 CLR 对象工作正常 我的 C 实现仅在应用程序启动时更新 之后对 CLR 的后续更改不会更新我的标签内
  • php 抓取并输出给定​​标签中的特定值或数字

    所以我对 php 很陌生 但在一些帮助下 我已经弄清楚如何抓取具有像 h1 class 这样的标签标识符的网站 更好的是 我已经弄清楚如何输出我想要的精确单词或值 只要它由空格分隔即可 例如 如果给定的标签名称 的输出为 30 个球 我可以