File_get_contents()函数加载与浏览器不同的页面



我正试图找到一个特定页面的下一个页面的链接(我在这里称该特定页面为current page)。我正在使用的程序中的current page

http://en.wikipedia.org/wiki/Category: 1980 _births

我从current page中提取的next page link是下面的

http://en.wikipedia.org/w/index.php?title=Category: 1980 _births& pagefrom =亚历克西斯托雅% % 2 c + 0 atoya +亚历克西斯# mw-pages

但是,当file_get_contents()函数加载next page link时,它会获取current page的内容…

代码

<?php
$string = file_get_contents("http://en.wikipedia.org/wiki/Category:1980_births");  //Getting contents of current page , 
preg_match_all("/(previous page) (<a href="(.*)" title/",  $string,$matches);    // extracting the next_page_link from the current page contents
foreach ($matches[1] as $match) {
break;
}
$next_page_link = $match;  
$next_page_link =  "http://en.wikipedia.org" . $next_page_link; //the next_link will have only the path , does't contain the domain name ,,, so i am adding the domain name here, this does't make any impact on the problem statement
$string1 = file_get_contents($next_page_link);
echo $next_page_link;
echo $string1;
?>

根据代码string1应该有next_page_link's的内容,但它只是获得current page的内容。

在原始网站的源代码中,链接具有实体编码的&号(参见我是否在?)当您单击锚点时,浏览器通常会对它们进行解码,但您的抓取代码不会。比较

http://en.wikipedia.org/ ... &amp;pagefrom=Alexis%2C+Toya%0AToya+Alexis#mw-pages

http://en.wikipedia.org ... &pagefrom=Alexis%2C+Toya%0AToya+Alexis#mw-pages

这个格式错误的查询字符串实际上是您传递给file_get_contents的内容。您可以将它们转换回常规&号,如下所示:

// $next_page_link = $match; 
$next_page_link = html_entity_decode($match);

相关内容

  • 没有找到相关文章