从另一个网站的 html 表中检索一行?

Posted

技术标签:

【中文标题】从另一个网站的 html 表中检索一行?【英文标题】:Retrieving a single line from a html table from another website? 【发布时间】:2014-08-18 01:37:20 【问题描述】:

我正在尝试学习 curl 的用法,但我还不完全了解它是如何工作的。如何使用 curl(或其他函数)访问表的一个(顶部)数据条目。到目前为止,我只能检索整个网站。我怎样才能只回显整个表格,特别是第一个条目。我的代码是:

<?php
$ch = curl_init("http://www.w3schools.com/html/html_tables.asp");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
?>

【问题讨论】:

php.net/manual/en/class.domdocument.php 【参考方案1】:

使用 curl 是一个好的开始,但它还不够,正如 hanky 建议的那样,您还需要使用 DOMDocument 并且还可以包含 DOMXpath

示例代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.w3schools.com/html/html_tables.asp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
libxml_use_internal_errors(true);
$html = curl_exec($ch); // the whole document (in string) goes in here
$dom = new DOMDocument();
$dom->loadHTML($html); // load it
libxml_clear_errors();
$xpath = new DOMXpath($dom);
// point it to the particular table
// table with a class named 'reference', second row (first data), get the td
$table_row = $xpath->query('//table[@class="reference"]/tr[2]/td');
foreach($table_row as $td) 
    echo $td->nodeValue . ' ';

应该输出:

Jill Smith 50

【讨论】:

我如何以相同的格式回显它,意思是吉尔在左边,史密斯在中间,50 在同一行的右边? @user3517904 哦,好吧,省略&lt;br/&gt;,或者用' '(空格)替换它 @user3517904 确定没问题!

以上是关于从另一个网站的 html 表中检索一行?的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个表中检索并再次将其输入到 laravel 中的另一个表中?

使用 php 从另一个网站获取 OuterHtml

如何从AWS Lambda检索数据并将其显示在AWS S3托管的静态网站上?

如果存在匹配值,则从另一个表中检索数据 - 否则基于第一个连接条件返回

如何使用单个查询联合从另一个表中检索到的表列表?

插入触发器 SQL。插入新表后如何从另一个表中检索值