• anyproxy规则文件


     对于服务端渲染的,要解析html,安装cheerio

    npm init
    npm install cheerio --registry=http://registry.npm.taobao.org

      

    var fs = require('fs');
    var cheerio = require('cheerio');
    
    var myHtml = fs.readFileSync("a.html");
    var $ = cheerio.load(myHtml);
    var t = $('html').find('hr');
    var t2 = t.nextAll();
    
    t2.each(function(i, elem) {
        getContent($(this));
        console.log($(this).text());  // .text()报错,用.children[0].data
    });

    参考:

    https://cheerio.js.org/

    https://www.jianshu.com/p/629a81b4e013

    DOM节点选择参考:https://blog.csdn.net/fbysss/article/details/54798229

    NaN处理:

    // ES5
    isNaN(NaN) //true 
    isNaN(undefined) //true 
    isNaN('qwer') //true 
    isNaN(123) //false
    
    //ES6
    Number.isNaN(undefined) //false 
    Number.isNaN(NaN) //true 
    Number.isNaN('qwer') //false 
    Number.isNaN(123) //false

    参考:https://blog.csdn.net/clydekuo/article/details/54929081

    mysql 逐条插入与批量插入

    let insertSqlOne = 'INSERT INTO table(id, c_id, name, add, s, create_time, deleted) VALUES (0,2,?,?,?,?,0)'  // one record
    
    let insertSqlBatch = 'INSERT INTO table(id, c_id, name, add, s, create_time, deleted) VALUES ?'  // many record
    
    var insertParamsOne = []
    var insertParamsBatch = []
    
    c_time = moment().format('YYYY-MM-DD HH:mm:ss')
    
        // one by one
        nameList.each((index, item) => {
            insertParamsOne = [
                0, TARGET_ID, hn, ha, Number(hs), c_time, 0
            ]
    
            mysqlConnection.query(insertSql, insertParamsOne, (error, result) => {
              if(error) {
                console.log('[INSERT ERROR] - ', error.message)
                return
              }
              console.log('存入数据库: ' + result.affectedRows + '条记录')
            })
        })
    
        // batch
        nameList.each((index, item) => {
            var hn = item.children[0].data
            var ha = addList[index].children[0].data
            var hs = sList[index].children[0].data
    
            insertParamsBatch.push([
              0, TARGET_ID, hn, ha, Number(hs), c_time, 0
            ])
          })
    
        mysqlConnection.query(insertSqlBatch, [insertParamsBatch], (error, result) => {
            if(error) {
              console.log('[INSERT ERROR] - ', error.message)
              return
            }
            console.log('存入数据库: ' + result.affectedRows + '条记录')
          })

    mysql插入前判断:

    如下,新插入的数据为第二行SELECT后的内容。判断条件为WHERE NOT EXISTS括号中内容。

    如果判断条件查处数据,则不插入。否则,插入新数据。

    INSERT INTO x_table (c_id, name, add, s, deleted)
    SELECT 2, 'namexxx', 'addxxx', 3, 0
    FROM DUAL
    WHERE NOT EXISTS (
      SELECT c_id, name, add, s, deleted FROM x_table where c_id=2 AND name='namexxx' AND deleted = 0
    )
    

      

    let insertSql = 'INSERT INTO x_table(c_id, name, add, s, deleted, create_time) SELECT ?,?,?,?,?,? FROM DUAL WHERE NOT EXISTS(SELECT c_id, name, add, s, deleted FROM x_table WHERE c_id = ? AND name = ? AND deleted = ?)'
    var insertParams = []
    
    
          c_time = moment().format('YYYY-MM-DD HH:mm:ss')  //
          insertParams = []
    
          xList.forEach((item, index) => {
            insertParams = [
              TARGET_ID, item.name, item.add, Number.isNaN(Number(item.s)) ? null : Number(item.s), 0, c_time, TARGET_ID, item.name, 0
            ]

    mysqlConnection.query(insertSql, insertParams, (error, result) => { if(error) { console.log('[INSERT ERROR] - ', error.message) return } console.log('存入数据库: ' + result.affectedRows + '条记录') }) })
  • 相关阅读:
    Windows环境安装tesseract-ocr 4.00并配置环境变量
    python问题集
    使用CefSharp在.Net程序中嵌入Chrome浏览器(八)——Cookie
    python虛擬環境和工具
    pycharm使用(持续更新)
    醒过来的都市
    下一个十年计划6-作品
    下一个十年计划5-方向选择
    下一个十年计划4-反向选择
    负逻辑的实际应用
  • 原文地址:https://www.cnblogs.com/ycc1/p/13914140.html
Copyright © 2020-2023  润新知