方法一
通过fopen和stream_get_contents获取html内容
从给定的url获取html内容
/**
* 爬虫程序 -- 原型
* 从给定的url获取html内容
* 通过fopen和stream_get_contents获取html内容
* @param string $url
* @return string
*/
function _getUrlContent($url)
{
//fopen() 函数打开一个文件或 URL。
$handle = fopen($url, "r");
// var_dump($handle);die;
if ($handle) {
//官方是这样描述的与 stream_get_contents();file_get_contents() 一样,但是 stream_get_contents() 是对一个已经打开的资源流进行操作,并将其内容写入一个字符串返回
$content = stream_get_contents($handle, 1024 * 1024);
return $content;
} else {
return false;
}
}
从html内容中筛选链接。爬取信息,可直接调用
/**
* 从html内容中筛选链接。爬取信息,可直接调用
* @param string $web_content
* @param [type] $tag [要查找的标签]
* @param [type] $attr [要查找的属性名]
* @param [type] $value [属性名对应的值]
* @return array
*/
function _filterUrl($web_content)
{
$tag = 'div';
$attr = '';
$value = '';
//自定义正则表达式
$reg_tag_a = "/<$tag.*?$attr=\".*?$value.*?\".*?>(.*?)<\/$tag>/is";
//获取页面所有链接的正则表达式
//$reg_tag_a = "/<[a|A].*?href=[\'\"]{0,1}([^>\'\"\ ]*).*?>/";
//preg_match_all 函数用于执行一个全局正则表达式匹配。
//参数一:$pattern: 要搜索的模式,字符串形式。
//参数二:$subject: 输入字符串。
//参数三:$matches: 多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。
//参数四:$flags:匹配模式,默认PREG_PATTERN_ORDER
$result = preg_match_all($reg_tag_a, $web_content, $match_result);
if ($result) {
//匹配结果
return $match_result[1];
}
}<