0

我使用 Simple HTML DOM Parser 进行解析,但它太慢了。所以我选择了cURL。我通过一些博客学习。现在我打印以显示两个标签之间的 href。

<?php
class tagSpider
{
var $crl;
var $html;
var $binary; 
var $url;

function tagSpider()
{
$this->html = "";
$this->binary = 0;
$this->url = "";
}

function fetchPage($url)
{
$this->url = $url;
if (isset($this->url)) {
$this->ch = curl_init ();
curl_setopt ($this->ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($this->ch, CURLOPT_URL, $this->url); 
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($this->ch, CURLOPT_BINARYTRANSFER, $this->binary); 
$this->html = curl_exec($this->ch); 
curl_close ($this->ch); 
}
}

function parse_array($beg_tag, $close_tag)
{
preg_match_all("($beg_tag.*$close_tag)siU", $this->html, $matching_data); 
return $matching_data[0];
}
}
?>

<?php
$urlrun="http://m4.cricbuzz.com/";
$stag='<span>';
$etag="</span>";
$tspider = new tagSpider();
$tspider->fetchPage($urlrun);
$linkarray = $tspider->parse_array($stag, $etag); 
foreach ($linkarray as $result) {
echo strip_tags($result, '<br><div>');
echo "<br>-<br>";
}
?> 

如何使用相同的程序显示href

4

1 回答 1

2

我看到您只是在复制和粘贴其他人的代码,而没有真正理解它实际上在做什么(这很好!我是新手时做过的)

您应该注意到代码被分成 2 个单独的部分。第二部分应该在 html body tabe 中,因为它正在打印 html 代码。只需在其周围添加 html 和 body 标签

<html>
<body>
<?php
$urlrun="http://www.yahoo.com/";
$stag='<span>';
$etag="</span>";
$tspider = new tagSpider();
$tspider->fetchPage($urlrun);
$linkarray = $tspider->parse_array($stag, $etag); 
foreach ($linkarray as $result) {
echo strip_tags($result, '<br><div>');
echo "<br>-<br>";
}
?> 
</body>
</html>

编辑:如果你想要链接,它更像是一个正则表达式。

<html>
<body>
<?php
$urlrun="http://www.google.com/";
$stag='href\=\"';
$etag="\"";
$tspider = new tagSpider();
$tspider->fetchPage($urlrun);
$linkarray = $tspider->parse_array($stag, $etag);
foreach ($linkarray as $result) {
echo strip_tags($result, '<br><div>');
echo "<br>-<br>";
}
?> 
</body>
</html>

这将为您提供以下格式的内容...

href="http://www.google.com/imghp?tab=wi"

href="http://maps.google.com/maps?tab=wl" 我相信您可以弄清楚其余部分,例如摆脱字符串的 href= 部分

于 2013-09-09T04:41:12.663 回答