【问题标题】:Reading Html from another website and analyze html tree从另一个网站读取 Html 并分析 html 树
【发布时间】:2019-07-16 11:59:46
【问题描述】:

我希望这不是重复的。

我通过 php 阅读了另一个网站,如下所示:

$homepage = @file_get_contents($url);

if ( $homepage == false ) {
  //...oh dear
}   

现在我想从 html 中获取 html 标记节点(jquery 锚)说我有这个代码

<div>
  <table>
    <tr>
      <td>
        xxx
      </td>
      <td>
        yyy
      </td>
      <td>
        zzz
      </td>
    <tr>
  </table>
</div>

我想得到带有“xxx”、“yyy”、“zzz”的数组。

通常我会使用 jquery/js 并循环通过 $('div table tr td').Val(); 但我如何使用 php 来做到这一点?

【问题讨论】:

  • 你可以试试 -> https://github.com/punkave/phpQuery
  • 谢谢。我认为这个或另一个 github 解决方案会很好。

标签: javascript php jquery html loops


【解决方案1】:

您可以使用PHP Html Parser

示例代码:

require "vendor/autoload.php";
use PHPHtmlParser\Dom;

$dom = new Dom;
$dom->load('<div class="all"><p>Hey bro, <a href="google.com">click here</a><br /> :)</p></div>');
$a = $dom->find('a')[0];
echo $a->text; // "click here"

【讨论】:

  • 谢谢。我认为这将是一个很好的解决方案。只是好奇:也许有办法以某种方式将 jquery 与另一个 url 连接起来?
  • 我发现最好的方法是github.com/punkave/phpQuery,但由于某种原因它不喜欢 xml 解析器,我需要它,所以我使用了 simplehtmldom,它工作得很好
【解决方案2】:

由于我的服务器解析器,我在使用 phpQuery 和 PHP html 时遇到了问题,所以最后我使用了:https://simplehtmldom.sourceforge.io/

示例代码:

include('files/libs/simplehtmldom_1_9/simple_html_dom.php');

// get DOM from URL or file
$html = file_get_html('http://poland_is_great.pl/');


// find all links
foreach($html->find('a') as $e) 
    echo $e->href . '<br>';

//table loop
foreach($html->find('tr') as $tr) 
{
    foreach($tr->find('td') as $td)
    {
        echo $td->innertext . '<br>';
    }
}   

【讨论】:

    猜你喜欢
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 2014-08-18
    • 1970-01-01
    • 2012-02-21
    相关资源
    最近更新 更多