php curl抓取网页内容(:,头信息的一部分,头)
优采云 发布时间: 2021-12-14 10:21php curl抓取网页内容(:,头信息的一部分,头)
当标签关闭时,后续的不会继续处理,但会继续处理前面的。
user-agent 是浏览器向服务器请求网页时提交的不可见头信息的一部分。头部信息是一个收录多个信息的数组,如本地缓存目录、cookies等,其中user-agent为浏览器类型声明,如IE、Chrome、FF等。
今天抓取网页的标签时,总是得到空值,但是直接查看网页的源码是正常的,所以怀疑是不是服务器设置了根据header来判断输出信息,首先尝试使用 get_meta_tags() 来抓取一个本地文件,然后这个本地文件将获取到的头信息写入文件中。结果如下,为了方便查看,用/代替。代码如下: 复制代码如下: array ("HTTP_HOST" => "192 .168.30.205", "PATH" => "C:/Program Files/Common Files/NetSarang;C:/Program Files/ NVIDIA Corporation/PhysX/Common;C:/Program Files/Common Files/Microsoft Shared/Windows Live;C:/Program Files/Intel/iCLS Client/;C:/Windows/system32;C:/Windows;C:/Windows /System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0/; C:/Program Files/Intel/Intel(R) Management Engine Components/DAL;C:/Program Files/Intel/Intel(R) Management引擎组件/IPT;C:/Program Files/Intel/OpenCL SDK/2.
0/bin/x86;C:/Program Files/Common Files/Thunder Network/KanKan/Codecs;C:/Program Files/QuickTime Alternative/QTSystem;C:/Program Files/Windows Live/Shared;C:/程序文件/QuickTime Alternative/QTSystem/; %JAVA_HOME%/bin;%JAVA_HOME%/jre/bin;", "SystemRoot" => "C:/Windows", "COMSPEC" => "C:/Windows/system32/ cmd. exe", "PATHEXT" => ". COM;.可执行程序;。蝙蝠;。 CMD;. VBS;. VBE;. JS;. JSE;. WSF;. WSH;. MSC", "WINDIR" => "C:/Windows", "SERVER_SIGNATURE" => "", "SERVER_SOFTWARE" => "Apache/2. 2.11 (Win32) PHP/5. 2. 8 ", "SERVER_NAME" => "192.
168.30.205", "SERVER_ADDR" => "192.168.30.205", "SERVER_PORT" => "80", "REMOTE_ADDR" => "192.168.30.205", " DOCUMENT_ROOT" => "E:/w www", "SERVER_ADMIN" => "admin@admin. com", "SCRIPT_FILENAME" => "E:/wamp/www/user-agent. php", "REMOTE_PORT" => "59479", "GATEWAY_INTERFACE" => "CGI/1.1", "SERVER_PROTOCOL" => "HTTP/1.0", "REQUEST_METHOD" => "GET", "QUERY_STRING" => "" , "REQUEST_URI" => "/user-agent. php", "SCRIPT_NAME" => "/user-agent. php", "PHP_SELF" => "/user-agent. php", "REQUEST_TIME" => 1400747529,) 果然数组中没有HTTP_USER_AGENT元素,当Apache向另一台服务器发送请求时,并没有UA,查了资料,get_meta_tags()函数并没有伪造UA的能力,所以只能用其他方法解决了。
后来用CURL搞定了,也搞定了网页,不过用起来有点麻烦。先伪造UA,拿到后使用正则表达式分析。
仿冒方法,代码如下: 复制代码如下: // 初始化一个cURL $curl = curl_init(); // 设置你需要抓取的URL curl_setopt($curl, CURLOPT_URL, ""); // 设置是否向浏览器输出文件头,0不输出 curl_setopt($curl, CURLOPT_HEADER, 0); // 设置UA,这里是将浏览器的UA转发到服务器,或者手动指定value curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); // 设置cURL参数,要求结果以字符串形式返回或输出到屏幕。0输出屏幕并返回BOOL值操作结果,1 返回字符串 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 运行 cURL 并请求一个网页 $data = curl_exec($curl); // 关闭 URL 请求 curl_close($curl) ; // 处理得到的数据 var_dump($data);
希望本文对您的 PHP 编程有所帮助。