繁体   English   中英

无法从flarum获取带有php curl的目标div

[英]Can't get target div with php curl from flarum

我正在尝试从flarum.org获取最新文章,但没有帖子。 它可以在其他普通网站上使用,但不适用于flarum。

这是我的功能:

function questions() {

    $url = 'https://discuss.flarum.org/';

    $curl = curl_init();
    curl_setopt( $curl, CURLOPT_URL, $url );
    curl_setopt( $curl, CURLOPT_HEADER, 0 );

    // SSL support
    curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
    curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt( $curl, CURLOPT_USERAGENT, $_SERVER[ 'HTTP_USER_AGENT' ] );

    // Variable support
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );

    $result = curl_exec( $curl );

    //echo $result;

    $result = str_replace( array( "\n", "\t", "\r" ), null, $result );

    preg_match_all( '#<div class="DiscussionListItem">(.*?)</div>#', $result, $match );

    print_r( $match );

    curl_close( $curl );

}

此函数打印一个空数组。

这不是解析HTML的方法。 而是使用HTML解析器。 如果HTML中有任何匹配的元素,则类似的事情将起作用:

$url = "https://discuss.flarum.org/";
$html = file_get_contents($url);
$dom = new DomDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html);
$xpath = new DomXPath($dom);
$results = $xpath->query("//div[@class='DiscussionListItem']");
foreach ($results as $result) {
    echo $result->nodeValue;
}

当然,HTML中没有任何匹配的元素。 您最好将XPath查询修改为//div[@class='container']/ul/li/a

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM