PHP 正则表达式抓取网页内容。
我想用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利用正则表达式抓取网页内容(网络爬虫)
转自:http://www.cocoachina.com/bbs/read.php?tid=103813 *****boy]原创 2012年5月20日 在开发项目的过程,很多情况下我们需要利用互联网上 ...
- ObjC利用正则表达式抓取网页内容(网络爬虫)
本文转载至 http://www.cocoachina.com/bbs/read.php?tid=103813&fpage=63 在开发项目的过程,很多情况下我们需要利用互联网上的一些数据,在 ...
- 使用Jsoup函数包抓取网页内容
之前写过一篇用Java抓取网页内容的文章,当时是用url.openStream()函数创建一个流,然后用BufferedReader把这个inputstream读取进来.抓取的结果是一整个字符串.如果 ...
- Python爬虫之requests+正则表达式抓取猫眼电影top100以及瓜子二手网二手车信息(四)
requests+正则表达式抓取猫眼电影top100 一.首先我们先分析下网页结构 可以看到第一页的URL和第二页的URL的区别在于offset的值,第一页为0,第二页为10,以此类推. 二.< ...
- C#.Net使用正则表达式抓取百度百家文章列表
工作之余,学习了一下正则表达式,鉴于实践是检验真理的唯一标准,于是便写了一个利用正则表达式抓取百度百家文章的例子,具体过程请看下面源码: 一:获取百度百家网页内容 public List<str ...
- 爬虫学习一系列:urllib2抓取网页内容
爬虫学习一系列:urllib2抓取网页内容 所谓网页抓取,就是把URL地址中指定的网络资源从网络中读取出来,保存到本地.我们平时在浏览器中通过网址浏览网页,只不过我们看到的是解析过的页面效果,而通过程 ...
- 正则表达式抓取文件内容中的http链接地址
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; ...
- iOS开发——网络使用技术OC篇&网络爬虫-使用正则表达式抓取网络数据
网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...
- paip.抓取网页内容--java php python
paip.抓取网页内容--java php python.txt 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog ...
随机推荐
- SpringMVC------maven编译报错:Dynamic Web Module 3.0 requires Java 1.6 or newer
如图所示: 但是 Eclipse 明明已经将编译级别设置为 1.7: 这是由于你的 Maven 编译级别是 jdk1.5 或以下,而你导入了 jdk1.6 以上的依赖包:查看 Eclipse 的 Na ...
- Linux Top命令详解(载自百度经验)
Linux系统可以通过top命令查看系统的CPU.内存.运行时间.交换分区.执行的线程等信息.通过top命令可以有效的发现系统的缺陷出在哪里.是内存不够.CPU处理能力不够.IO读写过高. 1 使用S ...
- Ognl_JSTL_学习笔记
控制标签 使用Struts2标签必须先导入标签库,在页面使用如下代码导入Struts2标签:<%@taglib prefix="s" uri="/struts-ta ...
- ios开发之--UITableView中的visibleCells的用法
先上图: 具体代码如下: #import "ViewController.h" @interface ViewController ()<UITableViewDelegat ...
- 第二十二篇:基于UDP的一对回射客户/服务器程序
前言 之前曾经学习过一对回射客户/服务器程序的例子,不过那个是基于TCP协议的.本文将讲解另一对回射客户/服务器程序,该程序基于UDP协议. 由于使用的协议不同,因此编写出的程序也有本质上的区别,应将 ...
- 初步总结javascript中学习DOM之前的知识
嘿嘿,又到了周末时间,周六其实就是总结这周的学习的,记得周二周三刚开始接触javascript时间,还是不知道怎么学习的,就感觉找不到方向,那时间学习的只是总结了一些简单的定义或者是学习结构,今天就把 ...
- [微信小程序]计算自己手机到指定位置的距离
目的: 根据目的地的坐标计算自己手机的位置离目的地的距离的 核心思路: 后续操作必须等所有异步请求都返回了才能继续 使用 const qqmap = require("../../utils ...
- Linux线程编程之生产者消费者问题
前言 本文基于顺序循环队列,给出Linux生产者/消费者问题的多线程示例,并讨论编程时需要注意的事项.文中涉及的代码运行环境如下: 本文假定读者已具备线程同步的基础知识. 一 顺序表循环队列 1.1 ...
- 【消息队列】windows下安装RabbitMQ消息队列服务器
RabbitMQ是什么 ? RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. 1:安装RabbitMQ需要先安装Erla ...
- Win8应用开发 入门篇(三) UX交互导航模式
导航模式(Windows 应用商店应用) 在本文中 分层模式 画布上导航 顶部应用栏 语义式缩放 相关主题 组织 Windows 应用商店应用中的内容,以便用户可以轻松而直观地进行导航.使用正确的 ...