PHP 正则表达式抓取网页内容。
来源:互联网 发布:gephi输入数据 编辑:程序博客网 时间:2024/05/16 12:42
我想用php抓取爱奇艺生活类型视频网页里面的元素,应该如何去做呢?
首先我要非常熟悉正则表达式,关于正则表达式的学习,我会写一篇博客一直学习的。
直接举例子:
这是一个爱奇艺生活视频的界面的网址
$url="http://www.iqiyi.com/v_19rrb1wlpw.html";
php的file_get_contents()函数,是把网页里的源码全部变成字符串读取出来。
$showdata=file_get_contents($url);
echo $showdata;
这几句话就可以做到把网页源码拿过来,再显示出来。
在得到网页源码的基础上,我们再利用正则表达式,把自己需要的内容提取出来。
php的preg_match_all('正则表达式内容','目标字符串',‘储存的字符串’);
上面的例子中 preg_match_all('/cid:(\d+)/', $showdata, $cid); 则是查找网页源码中所有符合cid:+数字的所有字符串。储存在cid中,cid是一个二维数组。
最简单的方法就是上面这些。但是在实际用到的时候却遇到一些问题。首先,网页源代码是网页初始化之前的代码,如果我们需要提取网页初始化之后的某些元素怎么办?
file_get_contents()只能获得源代码。初始化好之后的网页,无疑是通过post或者get请求数据得来的,我们打开javascript 控制台
看到network ,里面是每个网页源代码中加载的请求,而我们需要的元素就在这些请求之中,你需要把请求找出来,一般,视频网站向后台获取数据,都是由规律的,你需要自己去分析,获得视频网站的后台数据的url,我分析了一下午,找到了爱奇艺生活视频的后台数据url。
第二个问题就是正则表达式的问题,首先正则表达式比较难,容易写错,强烈建议,下载一个正则表达式测试器,先测试一下。
在获取网页内容中,我遇到了一个问题,如果用preg_match_all 抓取玩内容,在抓取的内容的基础上面再用preg_match_all,再抓取一次,这个时候会遇到问题。
因为第一次抓取获得的是一个二维数组,我们应该把它变成字符串,简单的用a[0][0]是不行的,需要用到implode函数 $b=implode('',$a[0]);
- PHP 正则表达式抓取网页内容。
- ObjC利用正则表达式抓取网页内容
- PHP抓取网页内容
- php抓取网页内容
- php抓取网页内容
- ObjC利用正则表达式抓取网页内容(网络爬虫)
- ObjC利用正则表达式抓取网页内容(网络爬虫)
- ObjC利用正则表达式抓取网页内容(网络爬虫)
- ObjC利用正则表达式抓取网页内容(网络爬虫)
- ObjC利用正则表达式抓取网页内容(网络爬虫)
- ObjC利用正则表达式抓取网页内容(网络爬虫)
- 基于Source和正则表达式的Scala网页内容抓取
- 基于Source和正则表达式的Scala网页内容抓取
- 基于Source和正则表达式的Scala网页内容抓取
- 网页抓取信息(php正则表达式、php操作excel)
- php curl与正则表达式抓取网页数据的例子
- 正则表达式抓取网页资源
- 用正则表达式抓取制定网页的特定内容(本文以抓取a标签为例)
- java求解一给定数字的二进制表达中的1的个数
- ctrl+v粘贴快捷键突然不能使用的原因及解决方案
- Linux学习总结(37)——CentOS7下Firewall防火墙配置用法详解
- Square HDU
- What Is Your Grade? HDU
- PHP 正则表达式抓取网页内容。
- 文章标题
- shiro
- 数据结构——栈
- HackerRank leonardo-and-lucky-numbers —— 模线性方程的通解
- ajax+jason=http 406
- 【C#】真分页功能的实现
- 暑期集训—day3—hdu 4506, 2855, 1097-快速幂与矩阵快速幂
- 7月22日考试总结