PHP抓取网页内容的方法

PHP抓取网页内容的方法
PHP抓取页面的内容在实际的开发当中是非常有用的,如作一个简单的内容采集器,提取网页中的部分内容等等,抓取到的内容在通过正则表达式做一下过滤就得到了你想要的内容,至于如何用正则表达式过滤,在这里就不做介绍了,有兴趣的同学可以参考板块:http://111cn.net/articles11.shtml,以下就是几种常用的用php教程抓取网页中的内容的方法。
1.file_get_contents
PHP代码

<?php   
$url = "http://www.111cn.net";
$contents = file_get_contents($url);
//如果出现中文乱码使用下面代码
//$getcontent = iconv("gb2312", "utf-8",$contents); 
echo $contents;
?>   

2.curl
PHP代码 <?php   
$url = "http://www.111cn.net";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//在需要用户检测的网页里需要增加下面两行
//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD);
$contents = curl_exec($ch);
curl_close($ch);
echo $contents;
?> 

3.fopen->fread->fclose
PHP代码 <?php   
$handle = fopen ("http://www.111cn.net", "rb");
$contents = "";
do {
   $data = fread($handle, 1024);
   if (strlen($data) == 0) {
   break;
   }
   $contents .= $data;
} while(true);
fclose ($handle);
echo $contents;
?> 

注:
1.使用file_get_contents和fopen必须空间开启allow_url_fopen。方法:编辑php.ini,设置allow_url_fopen = On,allow_url_fopen关闭时fopen和file_get_contents都不能打开远程文件。
2.使用curl必须空间开启curl。方法:windows下修改php.ini,将extension=php_curl.dll前面的分号去掉,而且需要拷贝ssleay32.dll和libeay32.dll到C:WINDOWSsystem32下;Linux下要安装curl扩展。

方法一

安装cURL

wget http://curl.haxx.se/download/curl-7.17.1.tar.gz

 tar -zxf curl-7.17.1.tar.gz

./configure --prefix=/usr/local/curl

make & make install

安装php

   只要打开开关 --with-curl=/usr/local/curl

   就可以了。

   这个扩展库还是非常棒,是fsockopen等等相关的有效的替代品。

方法二

进入安装原php的源码目录,

cd ext

cd curl

phpize

./configure --with-curl=DIR

make & make install

就会在PHPDIR/ext/curl/moudles/下生成curl.so的文件。

复制curl.so文件到extensions的配置目录,修改php.ini就好了

extension=curl.so

第一种方法试了N遍一直在失败中,于是放弃。

使用第二种方法安装,

phpize提示找不到,其实命令在/usr/local/php/bin/目标下:

# /usr/local/php/bin/phpize

./configure --with-curl=DIR需要指定php的配置路径,应该如下:

# ./configure --with-php-config=/usr/local/php/bin/php-config --with-curl=DIR

注:上面的资料中错把--with-php-config写成了--with-php-php-config

然后就是编译安装:

# make
# make install
到这里会提示生成文件curl.so的路径: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

进入到这个路径下,复制curl到extension_dir目录下(本目录路径可以看phpinfo可是直接看php.int),

修改php.ini

extension=curl.so

# /usr/local/php/bin/php -m
如果看到有curl项表示成功。

重启apache

# /usr/local/apache2/bin/apachectl stop

# /usr/local/apache2/bin/apachectl start

到此成功了,在phpinfo中可以看到CURL的项。

时间: 2024-08-08 00:03:26

PHP抓取网页内容的方法的相关文章

ASP.NET抓取网页内容的实现方法

 这篇文章主要介绍了ASP.NET抓取网页内容的实现方法,涉及使用HttpWebRequest及WebResponse抓取网页内容的技巧,需要的朋友可以参考下     本文实例讲述了ASP.NET抓取网页内容的实现方法.分享给大家供大家参考.具体实现方法如下: 一.ASP.NET 使用HttpWebRequest抓取网页内容 代码如下: /// <summary>方法一:比较推荐 /// 用HttpWebRequest取得网页源码 /// 对于带BOM的网页很有效,不管是什么编码都能正确识别

ASP.NET抓取网页内容的实现方法_实用技巧

本文实例讲述了ASP.NET抓取网页内容的实现方法.分享给大家供大家参考.具体实现方法如下: 一.ASP.NET 使用HttpWebRequest抓取网页内容 复制代码 代码如下: /// <summary>方法一:比较推荐  /// 用HttpWebRequest取得网页源码  /// 对于带BOM的网页很有效,不管是什么编码都能正确识别  /// </summary>  /// <param name="url">网页地址" </

PHP 用QueryList抓取网页内容

原文:PHP 用QueryList抓取网页内容 之前抓取网页数据都是用Java Jsoup,前几天听说用PHP抓更方便,今天就研究了一下,主要是用QueryList来实现. QueryList是一个基于phpQuery的通用列表采集类,是一个简单. 灵活.强大的采集工具,采集任何复杂的页面 基本上就一句话就能搞定了.   直接拿博客园举例子了,http://www.cnblogs.com/ 我们用QueryList来抓取红框里面的内容     查看网页源代码找到红框的位置 1 <div id=&qu

ASP.NET抓取网页内容

原文:ASP.NET抓取网页内容 一.ASP.NET 使用HttpWebRequest抓取网页内容   这种方式抓取某些页面会失败 不过,有时候我们会发现,这个程序在抓取某些页面时,是获不到所需的内容的,有时候甚至返回404的错误提示页,这是什么原因呢? 其实,很多人都忽略了一个问题,那就是服务器默认的浏览器问题.有的服务器默认的浏览器是手机浏览器,那么,当我抓取这个服务器下的网页是,就相当于用手机浏览器来打开网页,而如果要抓取的目标网页没有相应的手机网页的话,就会返回意想不到的结果,有的返回4

php基于curl实现随机ip地址抓取内容的方法_php技巧

本文实例讲述了php基于curl实现随机ip地址抓取内容的方法.分享给大家供大家参考,具体如下: 使用php curl 我们可以模仿用户行为,既可以设置我们访问的ip及浏览器信息还可以设置post方式. curl是一个特别牛逼的东西!~ 居然还可以生成随机的ip来访问,甚至可以让服务器分辨不出真实ip.这个很牛!有人说这个是不算bug的bug.不过有这个功能也给我们带来了很大的方便. php基于curl实现随机ip访问: <?php function curl($url,$ifpost = 0,

java简单网页抓取的实现方法_java

本文实例讲述了java简单网页抓取的实现方法.分享给大家供大家参考.具体分析如下: 背景介绍 一 tcp简介 1 tcp 实现网络中点对点的传输 2 传输是通过ports和sockets ports提供了不同类型的传输(例如 http的port是80) 1)sockets可以绑定在特定端口上,并且提供传输功能 2)一个port可以连接多个socket 二 URL简介 URL 是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址. 互联网上的每个文件都有一个唯一的

零基础写python爬虫之使用urllib2组件抓取网页内容_python

版本号:Python2.7.5,Python3改动较大,各位另寻教程. 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.  类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源. 在Python中,我们使用urllib2这个组件来抓取网页. urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件. 它以urlopen函数的形式提供了一个非常简单的接口. 最简

php通过curl添加cookie伪造登陆抓取数据的方法_php技巧

本文实例讲述了php通过curl添加cookie伪造登陆抓取数据的方法.分享给大家供大家参考,具体如下: 有的网页必须登陆才能看到,这个时候想要抓取信息必须在header里面传递cookie值才能获取 1.首先登陆网站,打开firebug就能看到对应的cookie把这些cookie拷贝出来就能使用了 2. <?php header("Content-type:text/html;Charset=utf8"); $ch =curl_init(); curl_setopt($ch,C

jquery+thinkphp实现跨域抓取数据的方法_php实例

本文实例讲述了jquery+thinkphp实现跨域抓取数据的方法.分享给大家供大家参考,具体如下: 今天做一个远程抓取数据的功能,记得jquery可以用Ajax远程抓取,但不能跨域.再网上找了很多.但我觉得还是来个综合的,所以我现在觉得有点把简单问题复杂化了,但至少目前解决了: 跨域抓取数据到本地数据库再异步更新的效果 我实现的方式:jquery的$.post发送数据到服务器后台,在由后台的PHP代码执行远程抓取,存到数据库ajax返回数据到前台,前台用JS接受数据并显示. //远程抓取获取数