curl模拟浏览器进行phpQuery抓取数据
报Warning: file_get_contents(http://www.dianping.com/shop/8042874) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden inF:\work\www.xxxx.com\phpQuery.php on line 4767 错误,
因为file_get_contents未进行模拟浏览器被服务器拒绝访问
解决方法
function get_fcontent($url, $timeout = 5 ) {
$url = str_replace( "&", "&", urldecode(trim($url)) );
$cookie = tempnam ("/tmp", "CURLCOOKIE");
$ch = curl_init();
//模拟浏览器 在HTTP请求中包含一个"User-Agent: "头的字符串。
curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
//需要获取的URL地址,也可以在 curl_init()函数中设置。
curl_setopt( $ch, CURLOPT_URL, $url);
//连接结束后保存cookie信息的文件。
curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
//启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器,使用CURLOPT_MAXREDIRS可以限定递归返回的数量。
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
//HTTP请求头中"Accept-Encoding: "的值。支持的编码有"identity","deflate"和"gzip"。如果为空字符串"",请求头会发送所有支持的编码类型。
在cURL 7.10中被加入。
curl_setopt( $ch, CURLOPT_ENCODING, "" );
//将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
//当根据Location:重定向时,自动设置header中的Referer:信息。
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
//禁用后cURL将终止从服务端进行验证。使用CURLOPT_CAINFO选项设置证书使用CURLOPT_CAPATH选项设置证书目录 如果CURLOPT_SSL_VERIFYPEER(默认值为2)被启用,CURLOPT_SSL_VERIFYHOST需要被设置成TRUE否则设置为FALSE。
自cURL 7.10开始默认为TRUE。从cURL 7.10开始默认绑定安装。
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # required for https urls
//在发起连接前等待的时间,如果设置为0,则无限等待。
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
//设置cURL允许执行的最长毫秒数。
curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
//指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的。
curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
$content = curl_exec( $ch );
curl_close ( $ch );
return $content;
}
//详细每个curlopt意思.转http://www.jb51.net/article/39331.htm
$url = 'http://www.dianping.com/shop/8042874';
$content = get_fcontent($url);
phpQuery::newDocumentHTML($content);
$main = pq('.shop-name')->html();
echo $main;
curl模拟浏览器进行phpQuery抓取数据的更多相关文章
- python requests 模拟登陆网站,抓取数据
抓取页面数据的时候,有时候我们需要登陆才可以获取页面资源,那么我们需要登陆以后才可以跳转到对应的资源页面,那么我们需要通过模拟登陆,登陆成功以后再次去抓取对应的数据. 首先我们需要通过手动方式来登陆一 ...
- php curl 添加cookie伪造登陆抓取数据(摘自网络)
有的网页必须登陆才能看到,这个时候想要抓取信息必须在header里面传递cookie值才能获取 1.首先登陆网站,打开firebug就能看到对应的cookie把这些cookie拷贝出来就能使用了 2. ...
- PHP获取cookie、Token、模拟登录、抓取数据、解析生成json
本文介绍使用PHP获取cookie,获取Token.以及模拟登录.然后抓取数据.最后解析生成json的的过程. 0. 设置Cookie路径 set_time_limit(0); //使用的cookie ...
- php中CURL技术模拟登陆抓取数据实战,抓取某校教务处学生成绩。
这两天有基友要php中curl抓取教务处成绩的源码,用于微信公众平台的开发.下面笔者只好忍痛割爱了.php中CURL技术模拟登陆抓取数据实战,抓取沈阳工学院教务处学生成绩. 首先,教务处登录需要验证码 ...
- PHP Curl模拟登录并抓取数据
使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据.具体实现的流程如下(个人总结): 1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息: ...
- C# WebBrowser控件 模拟登录 抓取数据
参考博客:C#中的WebBrowser控件的使用 参考博客:C#中利用WebBrowser控件,获得HTML源码 一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容 ...
- PHP的cURL库:抓取网页,POST数据及其他,HTTP认证 抓取数据
From : http://developer.51cto.com/art/200904/121739.htm 下面是一个小例程: ﹤?php// 初始化一个 cURL 对象$curl = curl_ ...
- php中封装的curl函数(抓取数据)
介绍一个封闭好的函数,封闭了curl函数的常用步骤,方便抓取数据. 代码如下: <?php /** * 封闭好的 curl函数 * 用途:抓取数据 * edit by www.jbxue.com ...
- Java模拟新浪微博登陆抓取数据
前言: 兄弟们来了来了,最近有人在问如何模拟新浪微博登陆抓取数据,我听后默默地抽了一口老烟,暗暗的对自己说,老汉是时候该你出场了,所以今天有时间就整理整理,浅谈一二. 首先: 要想登陆新浪微博需要 ...
随机推荐
- SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用
由于前一段时间胃痛,导致博客园博客都停更了一个月左右.近几天,胃病终于稍微有所好转,决定重新写博文. 前几天,有个朋友刚好问到本人有关 SQL 语句,大致是原表有两列,分别为月份.月份销售额,而需要一 ...
- 关于Excel导入的HDR=YES; IMEX=1详解
于Excel导入的HDR=YES; IMEX=1详解2011年12月27日 星期二 11:17 参数HDR的值:HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不 ...
- Qt中的 Size Hints 和 Size Policies
sizeHint 这个属性所保存的 QSize 类型的值是一个被推荐给窗口或其它组件(为了方便下面统称为widget)的尺寸,也就是说一个 widget 该有多大,它的一个参考来源就是这个 sizeH ...
- Javascript如何访问和处理系统文件
一.功能实现核心:FileSystemObject 对象 要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象. 二.FileSystemObject编程 使用 ...
- Could not load the assembly 'App_Web_cwclgcuu'. Make sure that it is compiled before accessing the page.
将网站迁移到windows server 2012 R2(64 bit), IIS 6.2(build 9200)上,爆出这个错误. 解决:右键相应的application pool,选择“Set A ...
- Codeforces Round #308 (Div. 2) A. Vanya and Table 暴力
A. Vanya and Table Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/552/pr ...
- C#中的ICollection接口
一.集合类: 1.1 ICollection接口 前面我们学习了数组,这是.net Framework定义的最基本的集合类型,除过数组外,.net Framework还另外定义了很多集合类型以满足编程 ...
- Objective-C的对象模型和runtime机制
内容列表 对象模型(结构定义,类对象.元类和实例对象的关系) 消息传递和转发机制 runtime系统功能理解 对象模型 结构定义 对象(Object): OC中基本构造单元 (building blo ...
- Dribbo
https://github.com/ikew0ng/Dribbo https://github.com/eltld/Dribbo
- 各种ORM安装
1.EF安装 2.PetaPoco安装 Install-Package PetaPoco 3.