简单 html dom 解析器从 table 获取 tr

Simple html dom parser get tr from table

我正在尝试废弃 http://spys.one/free-proxy-list/,但在这里我只想获取 Proxy by ip:port 列 我检查了网站有 3 table

谁能帮帮我?

<?php
    require "scrapper/simple_html_dom.php";

    $html=file_get_html("http://spys.one/free-proxy-list/");
    $html=new simple_html_dom($html);

    $rows = array();
    $table = $html->find('table',3);

    var_dump($table);

我真的不知道,你的简单 html dom 库是做什么的。反正。现在 PHP 已经包含了解析特定 dom 元素所需的一切。只需使用 PHP 自己的 DOMXPath class 来查询 dom 个元素。

这是获取 table 的第一列的简短示例。

$dom = new \DOMDocument();
$dom->loadHTML('https://your.url.goes.here');

$xpath = new \DomXPath($dom);

// query the first column with class "value" of the table with class "attributes"
$elements = $xpath->query('(/table[@class="attributes"]//td[@class="value"])[1]');

// iterate through all found td elements
foreach ($elements as $element) {
    echo $element->nodeValue;
}

这是一个可能的例子。它并不能完全解决您关于 http://spys.one/free-proxy-list/ 的问题。但它向您展示了如何轻松获取特定 table 的第一列。您现在唯一要做的就是在给定站点的 dom 中为您要查询的 table 找到正确的查询。因为给定站点的 dom 是很久以前的一个非常复杂的 table 布局,而您要解析的 table 没有唯一的 ID 或其他东西,您必须找出.

试试下面的脚本。它应该只为您获取所需的项目,而不是其他任何东西:

<?php
include 'simple_html_dom.php';
$url = "http://spys.one/free-proxy-list/";

$html = file_get_html($url);
foreach($html->find("table[width='65%'] tr[onmouseover]") as $file) {
    $data     = $file->find('td', 0)->plaintext;
    echo $data . "<br/>";
}
?>

它产生的输出如下:

 176.94.2.84
 178.150.141.93
 124.16.84.208
 196.53.99.7
 31.146.161.238