zoukankan      html  css  js  c++  java
  • 最近做的项目,总结一下。

      学了挺久,发现自己的理论基础确实很薄弱,基本功没有打好,就一直开发新东西,虽然能用,但是在资源和效率方面没做好。还有,现在做的东西,要用到的知识点太少了,很多以前学的,慢慢忘记了。很怀疑自己的记忆力,可是却又无从改变,只能写写博客,多记笔记了。

      最近,刚做了个爬58网站的php爬虫,虽然效率没有python快,但是基本够用了。用到的技术有,ajax , curl 还有image的画布创建加水印的一些函数。

      由于在抓包的时候,需要控制cpu的使用,所以不能连续抓包,只能够采用分段抓取的策略。这里,我用了ajax 和settimout() ,来定期地发送抓取请求到自己的服务器,触发抓取操作(间隔时间为(10s)。

      curl是模拟浏览器,直接发送http请求,获取返回数据。其中配置方面:

    $Curl=curl_init();//实例化cURL
    curl_setopt($Curl, CURLOPT_URL, $url);//初始化路径
    curl_setopt($Curl, CURLOPT_RETURNTRANSFER, 1);//0获取后直接打印出来
    curl_setopt($Curl, CURLOPT_HEADER, 0);//0关闭打印相应头,直接打印需为1,
    $result=curl_exec($Curl);//执行一个cURL会话
    curl_close($Curl);//关闭cURL会话

    在curl的配置上,还是很多记不住的东西。还要在研究一番。

      对于抓取的包该这么处理好呢?如果用正则的话,信息量太大,会相当较麻烦,这里我用到了一个php解析DOM 树的框架  simple_html_dom 。它是将所有的html标签,类,id,直接转化成数组的形式,原理和操作跟Jquery相似。效果挺好的!

    $houseCon = curl_get_content($houseUrl);
    $houseHtml = str_get_html($houseCon);
    
    $houseHtml->find('.tel-num',0)->plaintext;
    $houseHtml->find('article',0)->innertext;
    $houseHtml->find('.broker_sec_left img',0)->src;
    $houseHtml->clear();
    unset($houseHtml);

    对于图片的处理,用到的函数

    $dst = imagecreatefromstring(file_get_contents($imgDst));
    $src = imagecreatefromstring(file_get_contents($imgSrc));
    
    list($src_w, $src_h) = getimagesize($imgSrc);
    list($dst_w, $dst_h, $dst_type) = getimagesize($imgDst);
    
    imagecopy($dst, $src, $dst_x, $dst_y, 0, 0, $src_w, $src_h);//加上水印

    之后就是输出图片

    整个过程,差不多就这样。

  • 相关阅读:
    JDBC之——一个单线程JDBC基类和一些注意事项
    java基础之——类的初始化顺序
    java线程之——synchronized的注意细节
    java线程之——sleep()与wait()的区别
    mysql view(视图)
    select的5中子句where,group by, havaing, order by, limit的使用顺序及实例
    Django的文件下载
    Django中图片的上传并显示
    Django中 基于form的注册,基于ajax的登录
    centos7 安装zabbix3.4
  • 原文地址:https://www.cnblogs.com/hyh123/p/5282196.html
Copyright © 2011-2022 走看看