我想用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 正则表达式抓取网页内容。的更多相关文章

  1. (转)ObjC利用正则表达式抓取网页内容(网络爬虫)

    转自:http://www.cocoachina.com/bbs/read.php?tid=103813 *****boy]原创 2012年5月20日 在开发项目的过程,很多情况下我们需要利用互联网上 ...

  2. ObjC利用正则表达式抓取网页内容(网络爬虫)

    本文转载至 http://www.cocoachina.com/bbs/read.php?tid=103813&fpage=63 在开发项目的过程,很多情况下我们需要利用互联网上的一些数据,在 ...

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

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

  4. Python爬虫之requests+正则表达式抓取猫眼电影top100以及瓜子二手网二手车信息(四)

    requests+正则表达式抓取猫眼电影top100 一.首先我们先分析下网页结构 可以看到第一页的URL和第二页的URL的区别在于offset的值,第一页为0,第二页为10,以此类推. 二.< ...

  5. C#.Net使用正则表达式抓取百度百家文章列表

    工作之余,学习了一下正则表达式,鉴于实践是检验真理的唯一标准,于是便写了一个利用正则表达式抓取百度百家文章的例子,具体过程请看下面源码: 一:获取百度百家网页内容 public List<str ...

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

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

  7. 正则表达式抓取文件内容中的http链接地址

    import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; ...

  8. iOS开发——网络使用技术OC篇&网络爬虫-使用正则表达式抓取网络数据

    网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...

  9. paip.抓取网页内容--java php python

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

随机推荐

  1. repo_folder

    -- Create table create table REPO_FOLDER ( UUID ) not null, VALID ) not null, CREATE_TIME ) not null ...

  2. Git------创建本地库时绿色标志不显示

    转载: http://blog.csdn.net/zixiao217/article/details/77018392 解决方法: 按Win+R键打开运行对话框,输入 regedit.exe ,准备修 ...

  3. NYOJ 116 士兵杀敌 (线段树,区间和)

    题目链接:NYOJ 116 士兵杀敌 士兵杀敌(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描写叙述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的 ...

  4. moment.js用法总结

    moment(),获取当前时间 moment(string)把字符串变成moment时间格式 moment().format("YYYY-MM-DD HH:mm:ss"):规定时间 ...

  5. 【RF库Collections测试】Remove Duplicates

    Name:Remove DuplicatesSource:Collections <test library>Arguments:[ list_ ]Returns a list witho ...

  6. SQL - 只获取小时

    --时间小时加减 SELECT DATEADD(HOUR, -8, GETDATE()) FROM [Order] --使用convert转换时间格式获取小时,并转成int类型 SELECT CONV ...

  7. C# GIF图片的分解以及合成

    dll下载的地址 http://www.codeproject.com/Articles/11505/NGif-Animated-GIF-Encoder-for-NET   使用主要调用的是Compo ...

  8. GitHub 在使用命令行 git push 时报错:The requested URL returned error: 403

    使用 git 的命令行向 GitHub 提交的时候,报错: [Young@localhost OtherLang]$ git push origin master error: The request ...

  9. 零基础读懂视频播放器控制原理——ffplay播放器源代码分析

    版权声明:本文由张坤原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/535574001486630869 来源:腾云阁 ht ...

  10. LeetCode 28 Implement strStr() (实现找子串函数)

    题目链接: https://leetcode.com/problems/implement-strstr/?tab=Description   Problem : 实现找子串的操作:如果没有找到则返回 ...