PHP爬虫抓取网页内容 (simple_html_dom.php)

  使用simple_html_dom.php,下载|文档

  因为抓取的只是一个网页,所以比较简单,整个网站的下次再研究,可能用Python来做爬虫会好些。

 1 <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
 2 <?php
 3 include_once 'simplehtmldom/simple_html_dom.php';
 4 //获取html数据转化为对象
 5 $html = file_get_html('http://paopaotv.com/tv-type-id-5-pg-1.html');
 6 //A-Z的字母列表每条数据是在id=letter-focus 的div内class= letter-focus-item的dl标签内,用find方法查找即为 
 7 
 8     foreach($html->find('.txt-list li a') as $element)
 9     $arr[]= $element->innertext . '<br>';
10 
11     $fileName='data.txt';//不用事先建好
12     $arrLen=count($arr);
13     for($i=0;$i<$arrLen;$i++){
14     file_put_contents($fileName,$arr[$i],FILE_APPEND|LOCK_EX);
15     /*FILE_APPEND|LOCK_EX是往后追加数据,如果没有该参数,则只能插入一条数据
16         但是如果重新启动抓取时,则会将以往抓取过的数据继续存入*/
17     }
18     //以上是抓取的数据然后存到data.text里
19     $content=file_get_contents($fileName);
20     $cont=explode("<br>",$content);
21     $contLen=count($cont);
22     for($i=0;$i<$contLen;$i++) {
23         unset($cont[2*$i+1]);
24     }

先在 http://www.paopaotv.com/tv-type-id-5-pg-1.html 中找到节点,

 

1 foreach($html->find('.txt-list li a') as $element)
2 $arr[]= $element->innertext . '<br>';

获得节点内的数据

获得的数据:

可以看到,每个获取的数据后面都有个<br>***<br>,这时因为 .txt-list li 下面有两个a,所以会得到两个数据

1 $content=file_get_contents($fileName);
2     $cont=explode("<br>",$content);
3     $contLen=count($cont);
4     for($i=0;$i<$contLen;$i++) {
5         unset($cont[2*$i+1]);
6     }

获取data.text中的数据,通过 explode("<br>",$content) 将<br>前后的数据分成两部分,将$cont用print_r()函数打印出来后,得到

可以看出,所有不需要的数据都是奇数项,所以用 unset($cont[2*$i+1]); 函数删掉,显示的时候是:

但是如何将现在的数组的key重新排序,这个我还没不知道怎么弄,试过array_splice,该函数也不能设定只支持删除奇数的内容。

 

posted @ 2015-08-07 17:57  todaytoday  阅读(10010)  评论(0编辑  收藏  举报