curl设置不当导致php抓取网页失败
来源:互联网 发布:java rpc框架哪个好 编辑:程序博客网 时间:2024/04/29 02:16
php抓取网页,可谓轻而易举,几行代码就可以搞定。不过,如果你有所疏忽,程序写得不够严密,就会出现有的网页抓取成功有的网页却抓不了的问题。
先来看看php抓取代码的一个方法:
<?php$curl = curl_init();curl_setopt($curl, CURLOPT_URL, ‘http://www.webkaka.com/’);$data = curl_exec($curl);?>
代码中$data就是要抓取的网页html代码了。
但是如果使用这个程序去抓取网页文件,无疑是十分脆弱的。这可能对抓取大多数网页没有什么问题,但是某些网页,你会抓不到目标文件,取而代之的抓到意想不到的网页代码。这是什么原因呢?
其实,curl_setopt()的可选参数有的是十分重要的,在抓取网页这部分,有一个参数我们必须要考虑进去,那就是UserAgent。什么是UserAgent?UserAgent简称(UA),是一个只读的字符串,它声明了浏览器用于 HTTP 请求的用户代理头的值。简单来说,就是“声明用什么浏览器来打开目标网页”。
说到这里,可能有的人会意识到不同的UserAgent会得到不同的网页请求了,例如手机浏览器和PC浏览器,就会得到不同的网页文件。举个例子,假如PC浏览器和手机浏览器,打开www.webkaka.com,就会得到不同的结果页,这其实就是UserAgent的不同的结果。
好了,说到这里,我想大家都明白上述代码应该怎样修改了吧。
正确的写法应该是这样的:
<?php$UserAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'$curl = curl_init();curl_setopt($curl, CURLOPT_URL, ‘http://www.webkaka.com/’);curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);$data = curl_exec($curl);?>
上述代码声明使用IE浏览器打开网页。当然,你也可以声明用Firefox的UserAgent打开网页,代码如下:
- $UserAgent = 'Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1';
你还可以声明用其他UserAgent打开网页。下面是IE8的UserAgent:
IE8 on Windows Vista (兼容浏览)Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0)IE8 on Windows VistaMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)IE8 on Windows 7Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)64-bit IE on 64-bit Windows 7:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0)32-bit IE on 64-bit Windows 7:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0)
Firefox的UserAgent:
Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12
Chrome的UserAgent:
- Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13
Navigator的userAgent:
- Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6
Safari的userAgent:
Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3
Opera的userAgent:
Opera/9.27 (Windows NT 5.2; U; zh-cn) Opera/8.0 (Macintosh; PPC Mac OS X; U; en) Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0
通过设置UserAgent,可以避免有的网页因UA不同而返回不同http请求的错误,让自己的抓取网页程序更加完善严密。
- curl设置不当导致php抓取网页失败
- PHP使用CURL抓取网页
- PHP使用CURL抓取网页
- LD_LIBRARY_PATH设置不当导致的自动安装失败
- PHP cURL用法(抓取网页)
- php中的curl 网页抓取函数
- CURL多线程抓取网页
- curl抓取https网页
- 使用PHP的cURL库进行网页抓取
- 结合PHP和CURL抓取远程网页数据
- php curl 抓取网页的介绍和推广
- php cURL库(抓取网页,post数据及其他)
- php curl与正则表达式抓取网页数据的例子
- (PHP)用cURL抓取网页信息并替换部分内容
- PHP采用curl多线程抓取网页功能实现
- php curl 多线程抓取
- php curl 抓取数据
- 应用curl扩展抓取网页
- Deeplearning4j库学习
- 学习笔记之JavaSE(39)--IO流1
- tensorflow 程序挂起的原因,即整个进程不报错又不执行的原因
- 你的数据存放在哪
- 常用算法
- curl设置不当导致php抓取网页失败
- 结构体的三种初始化方式
- Java中ClassLoader类源码
- Android studio 导入项目出现:Failed to crunch file
- Linux 操作文档命令
- Fiddler图标意义
- 局部变量与全局变量的区别
- 文件上传(Struts框架)
- C++ vector用法