【问题标题】:How to use curl to print certain parts of webpage [duplicate]如何使用curl打印网页的某些部分[重复]
【发布时间】:2018-04-02 22:02:31
【问题描述】:

我正在尝试让页面的某些部分显示在输出中。

<?php //right wing - up to ages 22 - potential range of 84 to 99 
$ch = curl_init("https://sofifa.com/players? 
aeh=22&ptl=84&pth=99&pn=27&pn=25&pn=23");// This will do
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$output = curl_exec($ch);
echo $output;
curl_close($ch); 
?> 

上面的代码打印了 URL 的整个 html。我希望显示某些部分,例如球员姓名。下图显示了正在输出的整个页面。我试图只显示球员的名字,以及他们的等级、年龄和潜力。所以例如页面应该输出:L SANE : AGE: 21 OV : 84 : PO 92。

有什么办法可以做到吗? Image of page

【问题讨论】:

    标签: php html parsing curl


    【解决方案1】:

    您不使用 curl 来显示 parts of the page,而是使用它来获取页面。然后,一旦您获得该页面,您必须使用其他东西来解析出您感兴趣的页面部分。该页面是用 HTML 编写的,请查看this answer 以获取 PHP 的 HTML 解析实用程序列表。

    至于如何从这个特定页面解析出特定信息,页面中只有1个tbody标签,每个玩家都有自己专用的tr标签,即tbody的直接子标签标记,因此您可以迭代 tbody 标记的 tr 子级以遍历播放器。这些tr 标签中的每一个都有td 包含您想要的信息的孩子。第2个td标签的文字内容有他们的名字,第3个有年龄,第4个有等级,第5个有潜力。

    使用 DOMDocument 解析器的示例:

    <?php
    declare(strict_types = 1);
    $ch = curl_init ( "https://sofifa.com/players?aeh=22&ptl=84&pth=99&pn=27&pn=25&pn=23" );
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    $output = curl_exec ( $ch );
    curl_close ( $ch );
    $domd = @DOMDocument::loadHTML ( $output );
    foreach ( $domd->getElementsByTagName ( "tbody" )->item ( 0 )->getElementsByTagName ( "tr" ) as $tr ) {
        $tds = $tr->getElementsByTagName ( "td" );
        $player = array (
                'name' => trim ( $tds->item ( 1 )->textContent ),
                'age' => trim ( $tds->item ( 2 )->textContent ),
                'rating' => trim ( $tds->item ( 3 )->textContent ),
                'potential' => trim ( $tds->item ( 4 )->textContent ) 
        );
        print_r ( $player );
    }
    

    【讨论】:

    • 非常感谢您。 php中有没有覆盖DOM扩展的页面?
    • @JamesTyreece 如果您的意思是文档,那么是的,在这里:php.net/manual/en/book.dom.php
    猜你喜欢
    • 2011-12-30
    • 2011-01-14
    • 2013-07-31
    • 2015-01-22
    • 2015-11-07
    • 2014-02-12
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    相关资源
    最近更新 更多