达内潍坊中心 > 达内新闻
PHP爬虫编写(三)
- 发布:潍坊达内
- 来源:潍坊达内
- 时间:2018-09-29 18:28
九、搜索引擎爬虫的特点-潍坊达内负责整理
虽然我没见过像"百度","Google"它们的爬虫,可是我自己通过猜测,以及在实际爬去过程当中遇到的一些问题,自己总结的几个特点.
通用性
通用性是因为我认为搜索引擎的爬虫一开始并不是针对哪一个网站制定的,所以要求能爬取到的网站尽可能的多,这是第一点.而第二点,就是获取网页的信息就是那些,一开始不会因为某些个别特殊小网站而放弃某些信息不提取,举个例子:一个小网站的一个网页meta标签里没有描述信息(description)或者关键词信息(keyword),就直接放弃了描述信息或者关键词信息的提取,当然如果真的某一个页面没有这些信息我会提取页面里的文字内容作为填充,反正就是尽可能达到爬取的网页信息每个网页的信息项都要一样.这是我认为的搜索引擎爬虫的通用性,当然我的想法可能是错误的.
不确定性
不确定性就是我的爬虫获取什么网页我是控制不够全面的,只能控制我能想到的情况,这也是因为我写的算法就是这样的原因,我的算法就是爬取获取到的页面里的所有链接,再去爬去获取到的这些链接,其实是因为搜索引擎并不是搜某一些东西,而是尽可能的多,因为只有更多的信息,才能找到一个最贴切用户想要的答案.所以我就觉得搜索引擎的爬虫就要有不确定性.
十、到现在可能出现的问题
获取的源码出现乱码
<?PHP
// 乱码解决办法,把其他编码格式通过 mb_convert_encoding 函数统一转为 UTF-8 格式
$html = mb_convert_encoding($html,'UTF-8','UTF-8,GBK,GB2312,BIG5');
// 还有一种因为gzip所以出现乱码的,我会在以后讲
?>
2. 获取不到标题信息
<?PHP
// 获取不到标题信息解决办法,首先判断是否能获取到页面源码
// 如果能获取到但还是不能获取到标题信息
// 我猜测的问题是:因为我教的是使用正则表达式获取的,源码没有变成一行,获取起来就会出现问题
$htmlOneLine=preg_replace("/ | |/","",$html);
?>
3.获取不到页面源码
<?PHP
// 像新浪微博你可能获取到的是"Sina Visitor System"
// 解决办法添加header信息
$opts = array(
'http'=>array(
'method'=>"GET",
"timeout"=>20,
'header'=>"User-Agent: Spider ",
)
);
$context = stream_context_create($opts);
$html = file_get_contents($domain,0,$context,0,150000);
// 这样就能获取到新浪微博的页面了
?>

十一、获取一个网页时的处理思路
我们先不去想很多网页,因为很多网页也就是一个循环.
获取页面源码
通过源码提取页面的什么信息
提取的信息要怎么处理
处理后放不放进数据库
十二、按照十一的思路的代码
<?php
// 一、获取源码
// 假设我们要获取淘宝首页
$html = file_get_content("#");
// 二、提取标题和文本
// 三、提取信息处理
// 处理页面源码,多行变单行
$htmlOneLine = preg_replace("/ | |/","",$html);
// 获取标题信息
preg_match("/<title>(.*)</title>/iU",$htmlOneLine,$titleArr);
// 保留标题信息
$titleOK = $titleArr[1];
// 获取页面中的文本信息
// 处理前面不需要的head标签
$htmlText = preg_replace("/<html>(.*)</head>/","",$htmlOneLine);
// 处理style和script标签及内容
$htmlText = preg_replace("/<style(.*)>(.*)</style>|<script(.*)>(.*)</script>/iU","",$htmlText);
// 处理多余标签
$htmlText = preg_replace("/<(/)?(.+)>/","",$htmlText);
// 四、保存到数据库
// 略
?>
十三、PHP 保存页面的图片思路
获取页面源码
获取页面的图片链接
使用函数保存图片
十四、保存图片示例代码
<?php
// 使用file_get_contents()函数获取图片
$img = file_get_contents("http://127.0.0.1/photo.jpg");
// 使用file_put_contents()函数保存图片
file_put_contents("photo.jpg",$img);
?>
以上就是潍坊达内给大家做的内容详解,更多关于IT的学习,请继续关注潍坊达内
最新开班时间
- 北京
- 上海
- 广州
- 深圳
- 南京
- 成都
- 武汉
- 西安
- 青岛
- 天津
- 杭州
- 重庆
- 哈尔滨
- 济南
- 沈阳
- 合肥
- 郑州
- 长春
- 苏州
- 长沙
- 昆明
- 太原
- 无锡
- 石家庄
- 南宁
- 佛山
- 珠海
- 宁波
- 保定
- 呼和浩特
- 洛阳
- 烟台
- 运城
- 潍坊
PHP爬虫编写(三)
- 发布:潍坊达内
- 来源:潍坊达内
- 时间:2018-09-29 18:28
九、搜索引擎爬虫的特点-潍坊达内负责整理
虽然我没见过像"百度","Google"它们的爬虫,可是我自己通过猜测,以及在实际爬去过程当中遇到的一些问题,自己总结的几个特点.
通用性
通用性是因为我认为搜索引擎的爬虫一开始并不是针对哪一个网站制定的,所以要求能爬取到的网站尽可能的多,这是第一点.而第二点,就是获取网页的信息就是那些,一开始不会因为某些个别特殊小网站而放弃某些信息不提取,举个例子:一个小网站的一个网页meta标签里没有描述信息(description)或者关键词信息(keyword),就直接放弃了描述信息或者关键词信息的提取,当然如果真的某一个页面没有这些信息我会提取页面里的文字内容作为填充,反正就是尽可能达到爬取的网页信息每个网页的信息项都要一样.这是我认为的搜索引擎爬虫的通用性,当然我的想法可能是错误的.
不确定性
不确定性就是我的爬虫获取什么网页我是控制不够全面的,只能控制我能想到的情况,这也是因为我写的算法就是这样的原因,我的算法就是爬取获取到的页面里的所有链接,再去爬去获取到的这些链接,其实是因为搜索引擎并不是搜某一些东西,而是尽可能的多,因为只有更多的信息,才能找到一个最贴切用户想要的答案.所以我就觉得搜索引擎的爬虫就要有不确定性.
十、到现在可能出现的问题
获取的源码出现乱码
<?PHP
// 乱码解决办法,把其他编码格式通过 mb_convert_encoding 函数统一转为 UTF-8 格式
$html = mb_convert_encoding($html,'UTF-8','UTF-8,GBK,GB2312,BIG5');
// 还有一种因为gzip所以出现乱码的,我会在以后讲
?>
2. 获取不到标题信息
<?PHP
// 获取不到标题信息解决办法,首先判断是否能获取到页面源码
// 如果能获取到但还是不能获取到标题信息
// 我猜测的问题是:因为我教的是使用正则表达式获取的,源码没有变成一行,获取起来就会出现问题
$htmlOneLine=preg_replace("/ | |/","",$html);
?>
3.获取不到页面源码
<?PHP
// 像新浪微博你可能获取到的是"Sina Visitor System"
// 解决办法添加header信息
$opts = array(
'http'=>array(
'method'=>"GET",
"timeout"=>20,
'header'=>"User-Agent: Spider ",
)
);
$context = stream_context_create($opts);
$html = file_get_contents($domain,0,$context,0,150000);
// 这样就能获取到新浪微博的页面了
?>

十一、获取一个网页时的处理思路
我们先不去想很多网页,因为很多网页也就是一个循环.
获取页面源码
通过源码提取页面的什么信息
提取的信息要怎么处理
处理后放不放进数据库
十二、按照十一的思路的代码
<?php
// 一、获取源码
// 假设我们要获取淘宝首页
$html = file_get_content("#");
// 二、提取标题和文本
// 三、提取信息处理
// 处理页面源码,多行变单行
$htmlOneLine = preg_replace("/ | |/","",$html);
// 获取标题信息
preg_match("/<title>(.*)</title>/iU",$htmlOneLine,$titleArr);
// 保留标题信息
$titleOK = $titleArr[1];
// 获取页面中的文本信息
// 处理前面不需要的head标签
$htmlText = preg_replace("/<html>(.*)</head>/","",$htmlOneLine);
// 处理style和script标签及内容
$htmlText = preg_replace("/<style(.*)>(.*)</style>|<script(.*)>(.*)</script>/iU","",$htmlText);
// 处理多余标签
$htmlText = preg_replace("/<(/)?(.+)>/","",$htmlText);
// 四、保存到数据库
// 略
?>
十三、PHP 保存页面的图片思路
获取页面源码
获取页面的图片链接
使用函数保存图片
十四、保存图片示例代码
<?php
// 使用file_get_contents()函数获取图片
$img = file_get_contents("http://127.0.0.1/photo.jpg");
// 使用file_put_contents()函数保存图片
file_put_contents("photo.jpg",$img);
?>
以上就是潍坊达内给大家做的内容详解,更多关于IT的学习,请继续关注潍坊达内
最新开班时间
- 北京
- 上海
- 广州
- 深圳
- 南京
- 成都
- 武汉
- 西安
- 青岛
- 天津
- 杭州
- 重庆
- 厦门
- 哈尔滨
- 济南
- 福州
- 沈阳
- 合肥
- 郑州
- 长春
- 苏州
- 大连
- 长沙
- 昆明
- 温州
- 太原
- 南昌
- 无锡
- 石家庄
- 南宁
- 中山
- 兰州
- 佛山
- 珠海
- 宁波
- 贵阳
- 保定
- 呼和浩特
- 东莞
- 洛阳
- 潍坊
- 烟台
- 运城