php可以抓取网页数据吗(2019年我接触到PHP爬取的时候,我最开始是懵的 )
优采云 发布时间: 2021-12-03 08:04php可以抓取网页数据吗(2019年我接触到PHP爬取的时候,我最开始是懵的
)
2019年接触PHP爬虫的时候,一开始是懵的。有人用php写爬虫吗?
一个月后,嗯~世界上最好的语言写出世界上最好的爬虫,太香了!而7月15日晚上,也就是每天的加班,做完手头的下班后,就想着写php然后撤了。我写完之后才九点钟。我值得这么早下班吗?所以,这个博客已经出炉了!
简单的说,我用PHP抓取网页数据的三种常用方法,不光是分享,也是我自己的一个回顾。
希望对你有所启发和帮助:)。print_r("源代码在文末");
1.PHP file_get_contents()
file_get_content() 函数早在 PHP4 就出现了。该函数可以将整个文件读入一个字符串。使用语法为 file_get_contents(path,include_path,context,start,max_length);
这是一个屏幕截图:
那么如何使用这个功能来抓取网页数据呢?如果这个文件在线,这个文件可以读入str吗?答案是肯定的。所以简单一句话就可以得到网页的源码:(当然这个不是js渲染的,爬取网站)
function get_content()
{
$html_source = file_get_contents($this->url);
return $html_source;
}
2.PHP 卷曲
PHP curl 应该是我当时用得最多的PHP爬取方式了。
使用cURL处理很多复杂的页面,比如表单提交、FTP上传、HTTPS认证等;
这里放个链接,想深入的同学可以看一下用法。
function get_curl()
{
//初始化
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url);
//设置超时
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
// 如果是请求https时,要打开下面两个ssl安全校验
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//表示string输出,0为直接输出;
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headerArray);
$html_source = curl_exec($ch);
curl_close($ch);
// $result = json_decode($output,true); 请求部分接口会返回json可以用到
return $html_source;
}
3.PHP Snoopy.class.php采集类
百度百科说:
这很好!然后我们就可以下载Snoopy.class.php(私信),导入就可以了。
include('Snoopy.class.php');
function getsnoopy()
{
$snoopy = new Snoopy();
$snoopy->fetch($this->url);
$html_source = $snoopy->results;
return $html_source;
}
当然,这里只是Snoopy最简单的用法之一,抢源码。
抓取源代码后,使用regular,或者xpath,或者其他提取方式抓取你想要的数据。这里不说了,21:48,我要下班了。
//所有title的正则表达式
$parament = "/.*?/";
preg_match_all($parament,$html_source,$matchs);
print_r($matchs);
就写这些下班就走。
4. 爬取结果和源码
对!你没看错,我懒得处理数据……有些事情,结果并不重要,对吧?重要的是过程。
附上代码:
<p>