2019年11月23日 | 标签:

先看效果

www.xcar.com.cn
www.pcauto.com.cn
www.jimi168.com
www.feelcars.com
www.chinaunix.net
www.cheshi.com
www.app111.com
auto.sohu.com
auto.sina.com.cn
auto.people.com.cn
auto.msn.com.cn
auto.china.com
auto.163.com
抓取这13个网站
我使用了curl 单线程抓取 所有内容然后放入变量中
耗时是33秒
然后我使用curl的多线程抓取 然后放置内容到函数中 用事是8秒 速度快了4倍以上 平均1秒可以分析2个网页
这还是在网速很卡的情况下
所以可以预估的是
如果是我多线程 设置好参数 查询13个社交平台的数据进行分析 是可以在3秒之内完成结果的
我们先进行打基数
直接看代码
先是单线程代码
<?php
$curl = curl_init();// 初始化一个 cURL 对象
curl_setopt($curl, CURLOPT_URL, ‘http://www.163.com’);// 设置你需要抓取的URL
curl_setopt($curl, CURLOPT_HEADER, 0);// 设置header
curl_setopt($curl, CURLOPT_USERAGENT, “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36”);   //直接用chrome的开发工具打开网页然后抄下你的发送的request中agent参数
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);// 设置cURL 参数,要求结果保存到字符串中如果是0就是直接打印在频幕上 如果不设置就直接打印在屏幕上 这里我们需要保存在字符串所以是true。
$data = curl_exec($curl);// 运行cURL,请求网页
curl_close($curl);// 关闭URL请求 释放内存
echo $data;// 显示获得的数据
?>
上面就是最简单的例子 获取网页 然后复制到变量 再显示网页上
需要主要就是returntransfer要设置为1 确保返回给变量 然后就是agent数据要用chrome里面查询到的
关于更多的setopt 可以这里查询
http://php.net/manual/zh/function.curl-setopt.php
然后我们做一个循环 查询13个网站
<?php
$urls = array(
‘www.xcar.com.cn’,
‘www.pcauto.com.cn’,
‘www.jimi168.com’,
‘www.feelcars.com’,
‘www.chinaunix.net’,
‘www.cheshi.com’,
‘www.app111.com’,
‘auto.sohu.com’,
‘auto.sina.com.cn’,
‘auto.people.com.cn’,
‘auto.msn.com.cn’,
‘auto.china.com’,
‘auto.163.com’
);
$curl = curl_init();
//开始计时,放在头部
$pagestartime=microtime();
foreach($urls as $url){
// 初始化一个 cURL 对象
// 设置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, $url);
// 设置header
curl_setopt($curl, CURLOPT_HEADER, 0);
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_USERAGENT, “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36”);
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// 运行cURL,请求网页
$data = curl_exec($curl);
 @$totaldata=$totaldata.$data;
}
// 关闭URL请求
curl_close($curl);
//结束计时,放在最底部
$pageendtime = microtime();
$starttime = explode(” “,$pagestartime);
$endtime = explode(” “,$pageendtime);
$totaltime = $endtime[0]-$starttime[0]+$endtime[1]-$starttime[1];
$timecost = sprintf(“%s”,$totaltime);
echo “页面运行时间: $timecost seconds”;
echo $totaldata;
?>
这里我们使用了计时器 查看查询这些网址并且赋值给变量要多久
需要注意的是先输出时间 再输出html源代码 否则源代码这么长 显示出来要等很久
再看看使用curl的多线程的方法
<html>
 <meta  charset=”gb2312″>
 <?php
 set_time_limit(0);
//开始计时,放在头部
$pagestartime=microtime();
$urls = array(
‘www.xcar.com.cn’,
‘www.pcauto.com.cn’,
‘www.jimi168.com’,
‘www.feelcars.com’,
‘www.chinaunix.net’,
‘www.cheshi.com’,
‘www.app111.com’,
‘auto.sohu.com’,
‘auto.sina.com.cn’,
‘auto.people.com.cn’,
‘auto.msn.com.cn’,
‘auto.china.com’,
‘auto.163.com’
);
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
  $conn[$i] = curl_init($url);
  curl_setopt($conn[$i], CURLOPT_USERAGENT, “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36”);
  curl_setopt($conn[$i], CURLOPT_HEADER ,0);
  curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);
  curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1);  // 设置不将爬取代码写到浏览器,而是转化为字符串
  curl_multi_add_handle ($mh,$conn[$i]);
}
do {
  curl_multi_exec($mh,$active);
} while ($active);
foreach ($urls as $i => $url) {
  $data = curl_multi_getcontent($conn[$i]); // 获得爬取的代码字符串
  @$totaldata=$totaldata.$data;
} // 获得数据变量,并写入文件
foreach ($urls as $i => $url) {
  curl_multi_remove_handle($mh,$conn[$i]);
  curl_close($conn[$i]);
}
curl_multi_close($mh);
//结束计时,放在最底部
$pageendtime = microtime();
$starttime = explode(” “,$pagestartime);
$endtime = explode(” “,$pageendtime);
$totaltime = $endtime[0]-$starttime[0]+$endtime[1]-$starttime[1];
$timecost = sprintf(“%s”,$totaltime);
echo “页面运行时间: $timecost seconds”;
echo $totaldata;
?>
</html>

先看效果

www.xcar.com.cn
www.pcauto.com.cn
www.jimi168.com
www.feelcars.com
www.chinaunix.net
www.cheshi.com
www.app111.com
auto.sohu.com
auto.sina.com.cn
auto.people.com.cn
auto.msn.com.cn
auto.china.com
auto.163.com
抓取这13个网站
我使用了curl 单线程抓取 所有内容然后放入变量中
耗时是33秒
然后我使用curl的多线程抓取 然后放置内容到函数中 用事是8秒 速度快了4倍以上 平均1秒可以分析2个网页
这还是在网速很卡的情况下
所以可以预估的是
如果是我多线程 设置好参数 查询13个社交平台的数据进行分析 是可以在3秒之内完成结果的
我们先进行打基数
直接看代码
先是单线程代码
<?php
$curl = curl_init();// 初始化一个 cURL 对象
curl_setopt($curl, CURLOPT_URL, ‘http://www.163.com’);// 设置你需要抓取的URL
curl_setopt($curl, CURLOPT_HEADER, 0);// 设置header
curl_setopt($curl, CURLOPT_USERAGENT, “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36”);   //直接用chrome的开发工具打开网页然后抄下你的发送的request中agent参数
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);// 设置cURL 参数,要求结果保存到字符串中如果是0就是直接打印在频幕上 如果不设置就直接打印在屏幕上 这里我们需要保存在字符串所以是true。
$data = curl_exec($curl);// 运行cURL,请求网页
curl_close($curl);// 关闭URL请求 释放内存
echo $data;// 显示获得的数据
?>
上面就是最简单的例子 获取网页 然后复制到变量 再显示网页上
需要主要就是returntransfer要设置为1 确保返回给变量 然后就是agent数据要用chrome里面查询到的
关于更多的setopt 可以这里查询
http://php.net/manual/zh/function.curl-setopt.php
然后我们做一个循环 查询13个网站
<?php
$urls = array(
‘www.xcar.com.cn’,
‘www.pcauto.com.cn’,
‘www.jimi168.com’,
‘www.feelcars.com’,
‘www.chinaunix.net’,
‘www.cheshi.com’,
‘www.app111.com’,
‘auto.sohu.com’,
‘auto.sina.com.cn’,
‘auto.people.com.cn’,
‘auto.msn.com.cn’,
‘auto.china.com’,
‘auto.163.com’
);
$curl = curl_init();
//开始计时,放在头部
$pagestartime=microtime();
foreach($urls as $url){
// 初始化一个 cURL 对象
// 设置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, $url);
// 设置header
curl_setopt($curl, CURLOPT_HEADER, 0);
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_USERAGENT, “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36”);
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// 运行cURL,请求网页
$data = curl_exec($curl);
 @$totaldata=$totaldata.$data;
}
// 关闭URL请求
curl_close($curl);
//结束计时,放在最底部
$pageendtime = microtime();
$starttime = explode(” “,$pagestartime);
$endtime = explode(” “,$pageendtime);
$totaltime = $endtime[0]-$starttime[0]+$endtime[1]-$starttime[1];
$timecost = sprintf(“%s”,$totaltime);
echo “页面运行时间: $timecost seconds”;
echo $totaldata;
?>
这里我们使用了计时器 查看查询这些网址并且赋值给变量要多久
需要注意的是先输出时间 再输出html源代码 否则源代码这么长 显示出来要等很久
再看看使用curl的多线程的方法
<html>
 <meta  charset=”gb2312″>
 <?php
 set_time_limit(0);
//开始计时,放在头部
$pagestartime=microtime();
$urls = array(
‘www.xcar.com.cn’,
‘www.pcauto.com.cn’,
‘www.jimi168.com’,
‘www.feelcars.com’,
‘www.chinaunix.net’,
‘www.cheshi.com’,
‘www.app111.com’,
‘auto.sohu.com’,
‘auto.sina.com.cn’,
‘auto.people.com.cn’,
‘auto.msn.com.cn’,
‘auto.china.com’,
‘auto.163.com’
);
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
  $conn[$i] = curl_init($url);
  curl_setopt($conn[$i], CURLOPT_USERAGENT, “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36”);
  curl_setopt($conn[$i], CURLOPT_HEADER ,0);
  curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);
  curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1);  // 设置不将爬取代码写到浏览器,而是转化为字符串
  curl_multi_add_handle ($mh,$conn[$i]);
}
do {
  curl_multi_exec($mh,$active);
} while ($active);
foreach ($urls as $i => $url) {
  $data = curl_multi_getcontent($conn[$i]); // 获得爬取的代码字符串
  @$totaldata=$totaldata.$data;
} // 获得数据变量,并写入文件
foreach ($urls as $i => $url) {
  curl_multi_remove_handle($mh,$conn[$i]);
  curl_close($conn[$i]);
}
curl_multi_close($mh);
//结束计时,放在最底部
$pageendtime = microtime();
$starttime = explode(” “,$pagestartime);
$endtime = explode(” “,$pageendtime);
$totaltime = $endtime[0]-$starttime[0]+$endtime[1]-$starttime[1];
$timecost = sprintf(“%s”,$totaltime);
echo “页面运行时间: $timecost seconds”;
echo $totaldata;
?>
</html>
2019年11月22日 | 标签:

 

今天用div css 模仿公司的网站 总结下心得

首先要有大局观 看看网站从上到下 可以横着切成几个部分 例如我的例子中他就分 head main more info footer
这个4个部分 然后要用一个大的div 叫container的把这4个都包起来 方便整个页面的居中定位和以后增加背景色
然后这个4个部分都可以继承这个container的宽度
这里有个知识点 如果div里面没内容的话 div的背景色是不现实
只用增加一个高度属性就可以  每一个部分我们可以增加一个4边的图片的边框 边框的制作也是有技巧 我们也是横着
切3次 顶部边框一个长的,中间边框其实就是左柱 和右柱 向下填充用的是background:url() repeat-y,这里注意下比如说这个head 里面内嵌3个 自身的背景就用边框的左右 里面内嵌的第一个是边框顶部 第2个是边框底部;就可以把这4个
部分加漂亮的外边框(有阴影 有反光的 切3刀就可以)
有了整体定位以后 还有内部的定位问题 如果一个大的div里面嵌套小的div 你要定位的话记得小div用position:relative 这养可以定位 父子关系,兄弟关系的div 及同级别的 是可以用margin定位的
还有ul li的问题li和ul都是内敛元素 可以用display:block来解决 定义高低 同时加上float:left 就可以横着了排列
css精灵 这个技巧很重要 方便把小的icon或者大的点图片合并在一个图里面 再通过background:url以及background:postion来显示 这样5个图片整合在一个图片里面 分别显示的时候 通过postion移动现实就可以配合li使用 效果更加
还有一些小的图表也可以的

今天用div css 模仿公司的网站 总结下心得

首先要有大局观 看看网站从上到下 可以横着切成几个部分 例如我的例子中他就分 head main more info footer
这个4个部分 然后要用一个大的div 叫container的把这4个都包起来 方便整个页面的居中定位和以后增加背景色
然后这个4个部分都可以继承这个container的宽度
这里有个知识点 如果div里面没内容的话 div的背景色是不现实
只用增加一个高度属性就可以  每一个部分我们可以增加一个4边的图片的边框 边框的制作也是有技巧 我们也是横着
切3次 顶部边框一个长的,中间边框其实就是左柱 和右柱 向下填充用的是background:url() repeat-y,这里注意下比如说这个head 里面内嵌3个 自身的背景就用边框的左右 里面内嵌的第一个是边框顶部 第2个是边框底部;就可以把这4个
部分加漂亮的外边框(有阴影 有反光的 切3刀就可以)
有了整体定位以后 还有内部的定位问题 如果一个大的div里面嵌套小的div 你要定位的话记得小div用position:relative 这养可以定位 父子关系,兄弟关系的div 及同级别的 是可以用margin定位的
还有ul li的问题li和ul都是内敛元素 可以用display:block来解决 定义高低 同时加上float:left 就可以横着了排列
css精灵 这个技巧很重要 方便把小的icon或者大的点图片合并在一个图里面 再通过background:url以及background:postion来显示 这样5个图片整合在一个图片里面 分别显示的时候 通过postion移动现实就可以配合li使用 效果更加
还有一些小的图表也可以的
2019年11月21日 | 标签:

发现最近网站越来越慢

决定下定决心解决
首先发现服务器c盘全部用完 赶快删除垃圾 确实平时很少关注
然后用了webkaka 帮忙分析 然后支持 网站也没有用gzip
一起分析网站总是说gzip 但是从来没有认识到她的重要性
看到一个博客说提升3倍速度 觉得太夸张 但是也试一试把
据说是可以压缩网页大小79%  特别是html代码有40k 可以压缩到9k
这样速度恒定的情况下 确实可以提速
然后我就iis里面设置 网站 属性 启用动态压缩 然后添加gzip dll 修改meta文件
然后就发现这个问题 需求添加 html 也包含js 及css 然后 压缩 和解压都要
记得要停用服务中iis admin
再测试 网速直线上剩 整个网站速度从之前2秒多 其实要4秒 直接提升2倍  不要小看一倍
这样可以带来更低的反弹率 有效果很多的

发现最近网站越来越慢

决定下定决心解决
首先发现服务器c盘全部用完 赶快删除垃圾 确实平时很少关注
然后用了webkaka 帮忙分析 然后支持 网站也没有用gzip
一起分析网站总是说gzip 但是从来没有认识到她的重要性
看到一个博客说提升3倍速度 觉得太夸张 但是也试一试把
据说是可以压缩网页大小79%  特别是html代码有40k 可以压缩到9k
这样速度恒定的情况下 确实可以提速
然后我就iis里面设置 网站 属性 启用动态压缩 然后添加gzip dll 修改meta文件
然后就发现这个问题 需求添加 html 也包含js 及css 然后 压缩 和解压都要
记得要停用服务中iis admin
再测试 网速直线上剩 整个网站速度从之前2秒多 其实要4秒 直接提升2倍  不要小看一倍
这样可以带来更低的反弹率 有效果很多的