我正在尝试div
从此网站上获取新闻的所有链接URL
要获得所有链接,在查看源代码之后,什么也没有。
但是有什么数据显示
可以在任何能够理解PHP
,Array()
并JS
帮助我,好吗?
这是我获取内容的代码:
$html = file_get_contents("https://qc.yahoo.com/");
if ($result === FALSE) {
die("?");
}
echo $html;
假设您Anchor
要从给定页面中提取所有带有其超链接的标签。
现在file_get_contents
,对该URL进行操作存在某些问题:
gzip
因此,为了克服gzip
字符编码的第一个问题,我们将使用CURL作为他的答案中建议的@ gregn3。但是他错过了使用CURL自动解压缩gzip
内容的功能。
对于第二个问题,您可以按照本指南进行操作,也可以通过CURL的curl_setopt
方法禁用SSL验证。
现在,将从给定页面中提取所有链接的代码为:
<?php
$url = "https://qc.yahoo.com/";
# download resource
$c = curl_init ($url);
curl_setopt($c, CURLOPT_HTTPHEADER, ["Accept-Encoding:gzip"]);
curl_setopt ($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($c, CURLOPT_ENCODING , "gzip");
curl_setopt($c, CURLOPT_VERBOSE, 1);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 0);
$content = curl_exec ($c);
curl_close ($c);
$links = preg_match_all ("/href=\"([^\"]+)\"/i", $content, $matches);
# output results
echo "url = " . htmlspecialchars ($url) . "<br>";
echo "links found (" . count ($matches[1]) . "):" . "<br>";
$n = 0;
foreach ($matches[1] as $link)
{
$n++;
echo "$n: " . htmlspecialchars ($link) . "<br>";
}
但是,如果您想进行高级html解析,则需要使用PHP Simple HTML Dom Parser。在PHP Simple HTML Dom中,可以使用jQuery
选择器选择div并获取anchor tags
。这是文档和API手册。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句