无法从喇叭中获取带有 php 卷曲的目标 div

  • 本文关键字:php div 目标 获取 php curl
  • 更新时间 :
  • 英文 :


我正在尝试从 flarum.org 获取最新文章,但它没有得到帖子。它适用于其他正常站点,但在火焰中不起作用。

这是我的函数:

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

最新更新