curl 抓取网页(抓取网页内容,PHP手册真乃圣经也也乃也))
优采云 发布时间: 2021-09-09 19:24curl 抓取网页(抓取网页内容,PHP手册真乃圣经也也乃也))
获取网页内容,PHP有几个可以实现的内置函数,比如file()、file_get_contents()等,都支持URL参数。但要实现更复杂的操作,这些功能就无能为力了。
cURL 是一个文件传输工具,它使用 URL 语法在命令行下工作。 cURL 提供了一个 PHP 扩展。有了这个扩展,你可以完全模拟浏览器操作,就像使用浏览器浏览网页一样。可以设置header内容、设置cookie数据、POST数据、上传文件、设置代理等,其实我们这里讨论的爬取网页内容只是其常用的应用之一。
cURL 官方网站:
PHP cURL 扩展:
在Windows下添加这个扩展很简单,加载php_curl.dll即可。去掉php.ini文件extension=php_curl.dll前面的分号,将php_curl.dll复制到PHP扩展目录下或者重启C:\Windows\system32目录下的Web服务器。 php_curl.dll 在 PHP 的 ZIP 包中提供。
Linux下,需要先安装cURL。一种方法是编译成PHP,编译配置时加上--with-curl[=DIR]。另一种方法是编译成PHP模块加载,编译cURL模块的方法和编译其他PHP模块的方法是一样的。以下是基本命令:
cd /path/to/php/source 进入PHP源代码目录
cd ext/curl 进入cURL模块源码目录
/usr/local/php/bin/phpize 生成编译配置文件
./configure --with-php-config=/usr/local/php/bin/php-config
制作
进行安装
编译完成生成curl.so,修改php.ini,加载模块:
extension="/path/to/extension/curl.so"
测试cURL扩展是否加载,新建PHP文件:
抓取网页示例:
curl_setopt() 可以设置很多选项。更多选项请参考PHP手册。
更多的功能和用法请参考PHP手册(再次废话,强调PHP手册真的是一本圣经)。
2010-12-06 更新
============
当前,移动互联网发展迅猛。很多门户网站都开发了手机网站,比如腾讯()、新浪()、网易()、搜狐(),一般的手机网站都会对浏览器的User Agent进行检测做出相应的适应。但是用户代理不是很可靠,因为它是从客户端发送到服务器的。我们可以通过各种方式伪造用户代理。 Firefox 有一个插件 User Agent Switcher()(这个主页在中国可能无法访问。翻墙)就是这样一个工具。当然,本文讨论的cURL也可以做到这一点。在开发过程中,我们可能需要伪造用户代理。以下是几款主流平台智能手机自带浏览器的User Agent。
诺基亚 E71(S60 第三版):
Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE71/1.00.000; Profile/MIDP-2.0 Configuration/CLDC-1.1;) AppleWebKit/413(KHTML,如 Gecko)Safari/413
HTC Desire (安卓2.1/2.2):
Mozilla/5.0 (Linux; U; Android 2.1-update1; zh-cn; Desire_A8181 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) 版本/4.0 移动版 Safari/530.17
iPhone 3GS(iOS 3):
Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; zh-cn) AppleWebKit/420.1 (KHTML, like Gecko) 版本/3.0 Mobile/1A542a Safari /419.3
黑莓 8700(黑莓):
BlackBerry8700/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/100