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

时间:2022-02-05 14:41:25

  使用simple_html_dom.php,下载|文档

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

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

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

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

获得节点内的数据

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

获得的数据:

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

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

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

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

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

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

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

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

PHP爬虫抓取网页内容 (simple_html_dom.php)的更多相关文章

  1. JAVA使用Gecco爬虫 抓取网页内容&lpar;附Demo&rpar;

    JAVA 爬虫工具有挺多的,但是Gecco是一个挺轻量方便的工具. 先上项目结构图. 这是一个 JAVASE的 MAVEN 项目,要添加包依赖,其他就四个文件.log4j.properties 加上三 ...

  2. 爬虫学习一系列:urllib2抓取网页内容

    爬虫学习一系列:urllib2抓取网页内容 所谓网页抓取,就是把URL地址中指定的网络资源从网络中读取出来,保存到本地.我们平时在浏览器中通过网址浏览网页,只不过我们看到的是解析过的页面效果,而通过程 ...

  3. c&num;抓取网页内容乱码的解决方案

    写过爬虫的同学都知道,这是个很常见的问题了,一般处理思路是: 使用HttpWebRequest发送请求,HttpWebResponse来接收,判断HttpWebResponse中”Content-Ty ...

  4. Python爬虫--抓取糗事百科段子

    今天使用python爬虫实现了自动抓取糗事百科的段子,因为糗事百科不需要登录,抓取比较简单.程序每按一次回车输出一条段子,代码参考了 http://cuiqingcai.com/990.html 但该 ...

  5. paip&period;抓取网页内容--java php python

    paip.抓取网页内容--java php python.txt 作者Attilax  艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog ...

  6. 爬虫技术 -- 进阶学习(七)简单爬虫抓取示例(附c&num;代码)

    这是我的第一个爬虫代码...算是一份测试版的代码.大牛大神别喷... 通过给定一个初始的地址startPiont然后对网页进行捕捉,然后通过正则表达式对网址进行匹配. List<string&g ...

  7. Node&period;js爬虫抓取数据 -- HTML 实体编码处理办法

    cheerio DOM化并解析的时候 1.假如使用了 .text()方法,则一般不会有html实体编码的问题出现 2.如果使用了 .html()方法,则很多情况下(多数是非英文的时候)都会出现,这时, ...

  8. 使用Jsoup函数包抓取网页内容

    之前写过一篇用Java抓取网页内容的文章,当时是用url.openStream()函数创建一个流,然后用BufferedReader把这个inputstream读取进来.抓取的结果是一整个字符串.如果 ...

  9. python 爬虫抓取心得

    quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quo ...

随机推荐

  1. bootstrap按钮

    按钮 基类 -btn 样式 btn-default(默认) btn-link(链接) 大小 btn-*[lg,sm,xs] 状态 active disabled <!DOCTYPE HTML&g ...

  2. PostgreSQL的9&period;4已经发布(译)

    http://www.postgresql.org/about/news/1557/ 2014年12月18日,PostgreSQL全球开发小组发布PostgreSQL9.4,PostgresQL是世界 ...

  3. 自己的3dmax作品RX-105柯西高达

    背后视角带导弹仓. 侧面. 侧后视角. 前侧视角. 斜前上视角 使用关联实现骨骼功能,头.躯干.肩.上臂.前臂.手腕.手指.腰.髋关节.踝关节.脚掌皆由骨骼(是通过多边形关联实现骨骼功能,而不是使用3 ...

  4. index full scan&sol;index fast full scan&sol;index range scan

    **************************1************************************* 索引状态:          valid.      N/A .    ...

  5. MyBatis-配置缓存

    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"> <property name="tim ...

  6. 软件工程项目之摄影App(第二次冲刺)

    第二次冲刺阶段做出了登录,还有首页.基本界面也成型了. 登录验证码是用了mob的验证码skd.

  7. jdk8新特性:在用Repository实体查询是总是提示要java&period;util&period;Optional, 原 Inferred type &&num;39&semi;S&&num;39&semi; for type parameter &&num;39&semi;S&&num;39&semi; is not within its bound&semi;

    jdk8新特性:在用Repository实体查询是总是提示要java.util.Optional 在使用springboot 方法报错: Inferred type 'S' for type para ...

  8. STM32 双ADC同步规则采样

      最近需要用到两个ADC对电压电流进行同步采样,看了一下STM32的ADC介绍,发现STM32最多有3个独立ADC,有在双AD模式下可以进行同步测量,正好满足我的要求.参考官方给的例子在结合自己的需 ...

  9. 希尔排序算法-python实现

    #-*- coding: UTF-8 -*- import numpy as np def ShellSort(a): gap = a.size / 2 while gap >= 1: for ...

  10. C&num;基础之委托

    委托常常和事件在一起使用,可以理解委托是方法的容器,事件则是委托的另一种表现形式.委托和事件虽然写得还比较多,不过也只是用的熟练而已,趁周末没课好好巩固下基础,一点一点积累吧. 1.一个简单的小例子 ...