如何使用PHP在web上抓取Wikipedia表?

如何使用PHP在web上抓取Wikipedia表?,php,web-scraping,wikipedia,Php,Web Scraping,Wikipedia,我正在尝试刮除此表的不同字段: 我尝试使用API,但是,尽管我能够正确获取日期,但不同的列在返回的wikitext JSON中的格式不同。例如,php正则表达式会遗漏大量的事件标题。日期的格式是统一的,所以我可以拿到所有的罚款,但不幸的是没有其他 我试图使用DOM对象并查询HTML元素来获取数据,但一直遇到错误,老实说,我不太明白我在这里做什么 谢谢你的帮助,谢谢 以下是我目前正在尝试的代码: <?php $dom = new DomDocument; $dom->loadHtml

我正在尝试刮除此表的不同字段:

我尝试使用API,但是,尽管我能够正确获取日期,但不同的列在返回的wikitext JSON中的格式不同。例如,php正则表达式会遗漏大量的事件标题。日期的格式是统一的,所以我可以拿到所有的罚款,但不幸的是没有其他

我试图使用DOM对象并查询HTML元素来获取数据,但一直遇到错误,老实说,我不太明白我在这里做什么

谢谢你的帮助,谢谢

以下是我目前正在尝试的代码:

<?php

$dom = new DomDocument;
$dom->loadHtmlFile('https://en.wikipedia.org/wiki/List_of_UFC_events');

$xpath = new DomXPath($dom);

// collect header names
$headerNames = array();
foreach ($xpath->query('//table[@id="Past_events"]//th') as $node) {
    $headerNames[] = $node->nodeValue;
}

// collect data
$data = array();
foreach ($xpath->query('//tbody[@id="Past_events:tbody_element"]/tr') as $node) {
    $rowData = array();
    foreach ($xpath->query('td', $node) as $cell) {
        $rowData[] = $cell->nodeValue;
    }

    $data[] = array_combine($headerNames, $rowData);
}

print_r($data);

?>

看起来您需要先使用CURL…在该站点搜索与使用CURL获取html/远程html内容有关的内容