面包屑思维模型实战模型错题集结构手册流程手册自我检测专题模块

  • 微信小程序前端
    微信小程序前端易错点收集
    查看
  • css/less/sass样式控制
    在开发过程中的一些样式控制bug规避
    查看
  • tp5开发小程序
    tp5开发小程序时错误积累
    查看
  • PHP错题集
    PHP在实际开发过程中遇到的问题
    查看
  • MySql数据库
    使用MySql在实际开发中遇到的错误总结
    查看
  • TP5错题集
    积累tp5框架在实际开发过程中遇到的问题
    查看
  • uni-app爬坑
    主要用于uni-app项目中遇到的一些问题
    查看
  • Vue.js易错收集
    vue.js项目常见错误收集整理
    查看
  • uni-app开发微信小程序
    uni-app开发微信小程序的一些爬坑积累
    查看
  • Linux
    Linux在部署、开发、运维时遇见的错误积累
    查看
  • 安全设计
    常见安全设计
    查看
  • Redis
    项目中使用redis的相关错误积累
    查看
  • 前端特效
    前端特效相关错题集
    查看
more

最新博文

  • 淘客优惠券链接解析

    淘宝联盟

    做淘客,不懂API、不会爬虫、不会解析并拼接优惠券链接,是万万不行的。

    实际上一个成熟的淘客系统,不仅仅是通过自己的选品库、官方活动、官方高拥选品库就可以的。这个过程需要旁征博引,有时候就需要用到别人的优惠券链接。


    解析优惠券链接的方法是:

    将coupon/edetail?e  改为

    cp/coupon/?me


    注意:

    实际项目中,由于浏览器同源策略。所以请求cp/coupon/?me=.....时,不要放在前端(app除外),要放在服务器端。tp5使用curl模块来请求异源API数据。

    风口下的猪2020-02-06淘宝联盟

    阅读更多
  • PhantomJs采集JavaScript动态渲染的页面

    爬虫

    QueryList+PhantomJs动态抓取页面,主要是依靠PhantomJS二进制文件    



    使用说明:http://querylist.cc/docs/guide/v4/PhantomJS

    风口下的猪2020-02-06爬虫

    阅读更多
  • QueryList--rules()设置采集规则

    爬虫

    设置采集规则

    • 采集规则格式
    //采集规则
    $rules = array(
       '规则名' => array('jQuery选择器','要采集的属性'[,"标签过滤列表"][,"回调函数"]),
       '规则名2' => array('jQuery选择器','要采集的属性'[,"标签过滤列表"][,"回调函数"]),
        ..........
    );
    
    //注:方括号括起来的参数可选
    • 规则解释
    字段类型必填注释
    规则名string任意不重复字符串
    jQuery选择器string要选择的元素选择器
    要采集的属性string任意html元素属性
    标签过滤列表string设置要过滤的内容
    回调函数Closure用于对数据做额外处理
    • 例子
    //采集规则
    $rules = [
        //采集img标签的src属性,也就是采集页面中的图片链接
        'name1' => ['img','src'],
        //采集class为content的div的纯文本内容,
        //并移除内容中的a标签内容,移除id为footer标签的内容,保留img标签
        'name2' => ['div.content','text','-a -#footer img'],
        //采集第二个div的html内容,并在内容中追加了一些自定义内容
        'name3' => ['div:eq(1)','html','',function($content){
            $content += 'some str...';
            return $content;
        }]
    ];
    

    规则字段解释

    下面单独解释几个复杂的字段。

    1.要采集的属性

    值为以下3种:

    • text:返回当前选中标签下面的纯文本
    • html:返回当前选中标签下面的html片段
    • [HTML标签属性]:如src、href、name、data-src等任意HTML标签属性名,支持通配符*匹配标签所有属性

    2.标签过滤列表

    设置此选项可用来过滤不想要的内容,多个值之间用空格隔开,有如下2条规则:


    1. 当标签名前面添加减号(-)时(此时标签可以为任意的jQuery选择器),表示移除该标签以及标签内容。
    2. 当标签名前面没有减号(-)时,当 [要采集的属性] 值为text时表示需要保留的HTML标签以及内容,为html时表示要过滤掉的HTML标签但保留内容。

    • 例子

    如下面这段html:

    <div class="article">
        这是中文内容,<a href="http://querylist.cc">这里有个链接</a>
        <div class="ad1">
            这里有一段广告
        </div>
        <div class="ad2">
            这里还有一段广告
        </div>
    </div>

    获取class为article的元素内部内容,但是不想要那几段广告文字,那么此时就可以设置采集规则为:

    //采集规则
    $rules = [
        'content' => ['.article','html','-.ad1 -.ad2']
    ];

    意思就是:采集class为article的元素内部的html内容,并去掉class为ad1和class为ad2的元素内容。

    现在获取到的内容就为:

    这是中文内容,<a href="http://querylist.cc">这里有个链接</a>

    实际采集中我们一般并不想采集别人的外链,想去掉内容中的链接,此时如果过滤器改为-.ad1 -.ad2 -a,采集到的内容就为:

    这是中文内容,

    链接是去掉了,但实际上我们是想保存链接文字内容的,所以过滤器应该改为:-.ad1 -.ad2 a,这样采集到的内容就为:

    这是中文内容,这里有个链接

    用法


    $html=<<<STR
    <div class="content">
        <div>
            <a href="https://querylist.cc/1.html">这是链接一</a>
            <span>这是文字一</span>
        </div>
    
        <div>
            <a href="https://querylist.cc/2.html">这是链接二</a>
            <span>这是文字二</span>
        </div>
    
        <div>
            <a href="https://querylist.cc/1.html">这是链接三</a>
            <span>这是文字三</span>
        </div>
    </div>
    STR;
    
    //采集规则
    $rules = [
        //采集a标签的href属性
        'link' => ['a','href'],
        //采集a标签的text文本
        'link_text' => ['a','text'],
        //采集span标签的text文本
        'txt' => ['span','text']
    ];
    
    $ql = QueryList::html($html)->rules($rules)->query();
    $data = $ql->getData();
    print_r($data->all());

    采集结果:

    Array
    (
        [0] => Array
            (
                [link] => https://querylist.cc/1.html
                [link_text] => 这是链接一
                [txt] => 这是文字一
            )
    
        [1] => Array
            (
                [link] => https://querylist.cc/2.html
                [link_text] => 这是链接二
                [txt] => 这是文字二
            )
    
        [2] => Array
            (
                [link] => https://querylist.cc/1.html
                [link_text] => 这是链接三
                [txt] => 这是文字三
            )
    
    )
    






    风口下的猪2020-02-06爬虫

    阅读更多
  • QueryList爬取数据的工作原理

    爬虫

    QueryList 通过获取网页整体页面内容,利用css选择器来做采集。


    (静态页面爬取可以部署到虚拟主机上,但是要爬取动态页面,因为虚拟主机一般关闭了proc_open()函数。所以但凡需要动态爬取网页数据的项目,都需要部署到服务器上)

    风口下的猪2020-02-06爬虫

    阅读更多
  • php爬取数据的解决方案

    爬虫

    如果只爬取静态网页的数据,使用QueryList即可;

    如果需要爬取动态网页的数据,则需要使用QueryList+phantomjs;


    QueryList官方文档:http://querylist.cc/docs/guide/v4



    风口下的猪2020-02-06爬虫

    阅读更多
  • workerman知识简述(6)

    socket

    websocket的状态


    websocket的两个属性:readyState和bufferedAmount。


    根据readyState属性可以判断webSocket的连接状态,该属性的值可以是下面几种:

    0 :对应常量CONNECTING (numeric value 0),

     正在建立连接连接,还没有完成。The connection has not yet been established.

    1 :对应常量OPEN (numeric value 1),

     连接成功建立,可以进行通信。The WebSocket connection is established and communication is possible.

    2 :对应常量CLOSING (numeric value 2)

     连接正在进行关闭握手,即将关闭。The connection is going through the closing handshake.

    3 : 对应常量CLOSED (numeric value 3)

     连接已经关闭或者根本没有建立。The connection has been closed or could not be opened.

    例:

    var socket = new WebSocket(url);

    if(socket.readyState!=1){

           alert("未连接。");

           return;

    }


    根据bufferedAmount可以知道有多少字节的数据等待发送,若websocket已经调用了close方法则该属性将一直增长。



    风口下的猪2020-02-06socket

    阅读更多
  • workerman知识简述(7)

    socket

    (1)调试时看是否创建成功,看请求信息中是否生成websocket锁(密钥),并且http是否升级到websockt

    (2)每次修改workerman入口文件,便要重新通过指令开启socket

    风口下的猪2020-02-06socket

    阅读更多
  • workerman知识简述(5)

    socket

    (1)调试时看是否创建成功,看请求信息中是否生成websocket锁(密钥),并且http是否升级到websockt

    (2)每次修改workerman入口文件,便要重新通过指令开启socket

    风口下的猪2020-02-06socket

    阅读更多
  • workerman知识简述(4)

    socket

    系统侧重与选择

    (1)对于windows系统来说,开进程的开销很大,因此往往是单进程的线程,侧重解决的问题是“资源抢夺”与“同步”方面的问题;

    (2)对于Linux系统来说,开进程的开销很小,因此往往是多进程多线程,侧重解决的问题的是进程间的通讯


    [CPU为多核的情况下,多线程在性能上不如多进程]

    一般实际项目,有socket,会选择Linux,windows必须一直开着cmd使socket挂起。




    风口下的猪2020-02-06socket

    阅读更多
  • workerman知识简述(3)

    socket

    workerman知识集锦:

    一.握手过程

    workerman的握手过程其实是一次http协议请求,告知服务器及返回通知客户端,使两者长连接。


    二.客户端实例socket的方法

    客户端实例socket的方法有两个,一是socket.send(),一是socket.close()。

    (1)socket.send()向通信通道发布信息,参数必须是字符串(项目中要JSON.stringify序列化数据);

    (2)socket.close()关闭本地socket实例对通信通道的监听。项目中使用它,主要是有多个socket监听不同端口的情况下,需要关闭一个实例,去打开另一个实例,避免闲置对性能的影响。


    三.客户端实例socket的事件

    (1)onopen()成功连接socket时触发

    因为连接是有网络延迟的,即websocket实例化时并不能保证能瞬间握手连接,此时如果直接调用send()或者close()肯定是会出错的。

    (2)onerror()发生错误时触发

    (3)onclose()在关闭时触发

    在实际项目中,一定注意其要写在socket.close()之前

    (4)onmessage()在接收到消息时触发


    四.客户端实例的几种状态

    (1)webSocket.OPENING  0  正在建立连接;

    (2)webSocket.OPEN  1  已连接;

    (3)webSocket.CLOSING  2  正在关闭连接;

    (4)webSocket.CLOSE   3  已关闭连接。


    五.客户端workerman的特点

    在客户端,new socket=new Websocket();创建一个websocket应用时,就会立即向服务器发送请求



    风口下的猪2020-02-06socket

    阅读更多
  • workerman知识简述(2)

    socket

    1. socket 概述

    socket 也称作套接字,用于描述 IP 地址和端口,是一个通信链的句柄,可以用来实现不同计算机之间的通信。socket 是对 TCP / IP 协议的封装,它只是提供了一组针对 TCP 或者 UDP 进行编程的接口(API)。

    socket 利用客户端 / 服务器端的模式巧妙地解决了进程之间建立通信连接的问题。


    2. socket 的工作原理

    服务器端先初始化 socket,然后与端口绑定(bind),对端口进行监听(listen),等待客户端连接,调用accept阻塞。

    这时,如果有客户端初始化一个 socket,然后请求连接服务器(connect),如果连接成功,客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把响应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。


    3.socket的核心

    实际项目中,解决socket的核心是多进程+Epoll+非阻塞



    风口下的猪2020-02-06socket

    阅读更多
  • 软件开发
  • 素质要求
  • 计算机基础
  • 架构
  • 安全
  • 性能
  • 运维
  • 尾页
  • 数据库
  • 开发终端
  • 语言基础
  • 项目管理
  • 产品设计
  • 系统
  • 工作规范
  • 计算机网络
  • 前端技术栈
  • 数据结构
  • 计算机组成原理
  • 后端技术栈
  • 性能优化
  • 安全设计
  • 常见模块
  • 计算机操作系统
  • 服务器
  • python
  • MySQL
  • thinkphp
  • PHP
  • Java
  • JavaScript
  • Windows
  • Linux
  • 特效
  • indexedDB
  • vue
  • 淘宝联盟
  • Ionic
  • Angular
  • 微信小程序
  • 支付宝小程序
  • uni-app
  • css/sass/less
  • 支付
  • socket
  • 爬虫
  • web性能优化
  • 消息推送
  • CVM
  • sqlite
  • Redis
  • 前端基础
  • 基础
  • element
  • Nginx
  • yii2
  • /ponder/index/catelist/catelist/cateid/10.html

    我的名片

    网名:风口下的猪

    职业:软件开发、广告传媒

    现居:重庆渝北

    Email:kamoneyte@qq.com

    标签云

    站点信息

    • 文章统计:528篇
    • 移动端访问:扫码进入SQ3R