数组编号问题

时间:2018-07-29 11:00:49

标签: php arrays

为什么此代码能够从接下来的第一页中获取数据并通过对该数组编号来将其插入到数组中,而在接下来的第二页中却无法做到:

http://nimishprabhu.com

https://www.fiverr.com/search/gigs?utf8=%E2%9C%93&source=guest-homepage&locale=en&search_in=everywhere&query=php

页面显示编号如下的数组,这是不正确的:

Array ( [0] => mailto:support@fiverr.com ) 
Array ( [0] => https://collector.fiverr.com/api/v1/collector/noScript.gif?appId=PXK3bezZfO
        [1] => https://collector.fiverr.com/api/v1/collector/pxPixel.gif?appId=PXK3bezZfO ) 
Array ( [0] => One Small Step )

代码:

<?php

/*
2.
FINDING HTML ELEMENTS BASED ON THEIR TAG NAMES

Suppose you wanted to find each and every image on a webpage or say, each 
and every hyperlink. 
We will be using “find” function to extract this information from the 
object. Doing it using Simple HTML DOM Parser :
*/

include('simple_html_dom.php');

$html = file_get_html('https://www.fiverr.com/search/gigs?utf8=%E2%9C%93&source=guest-homepage&locale=en&search_in=everywhere&query=php');

//to fetch all hyperlinks from a webpage
$links = array();
foreach($html->find('a') as $a) {
  $links[] = $a->href;
}
print_r($links);
echo "<br />";

//to fetch all images from a webpage
$images = array();
foreach($html->find('img') as $img) {
  $images[] = $img->src;
}
print_r($images);
echo "<br />";

//to find h1 headers from a webpage
$headlines = array();
foreach($html->find('h1') as $header) {
  $headlines[] = $header->plaintext;
}
print_r($headlines);
echo "<br />";

?>

欢迎为我的学习目的提供任何建议和代码示例。 我是自学生。

1 个答案:

答案 0 :(得分:2)

原因是您尝试下载的页面(fiverr.com)是基于JavaScript的,具有动态加载的内容。这在PHP中将不起作用,因为它只能看到服务器发送的HTML,无法解析和运行JavaScript。因为这是出于学习目的,所以您只需尝试其他网站即可。

但是,如果您想要一个可行的解决方案,则应调查Selenium。基本上,它是无头的Web浏览器,其功能类似于其他浏览器,包括运行JavaScript。通过其网络驱动程序,您将能够完全解析Fiverr.com等网站。