通过phantomjs和casperjs将废弃数据保存到mysql数据库

时间:2018-04-02 15:04:54

标签: web-scraping phantomjs casperjs

您好我正在使用网络剪贴板,首先我尝试使用php CURL进行剪贴簿,但后来我遇到了一个问题,即我无法删除通过AJAX加载的网站然后我转移到'幻影JS'和'casper JS`。

现在我已经成功安装了webkit并且可以从任何网站中删除数据,但是我无法保存数据以便在数据库中长期使用。简单地说,供以后使用。我想要做的是,无论我废弃什么数据,我想将其保存到mySql数据库。

有什么方法可以实现这样的功能吗?我尝试发送Ajax请求将数据发送到数据库但失败了。

我提出了另一个解决方案,例如,当我从指定网站废弃数据时,我将数据推送到名为data[]的数组,然后我将该数据写入{{1}文件。将每一组数据保存在从.json得到的对象数组中。

现在,我不知道如何获取该文件数据并将其保存在数据库中?是否有可能在完成报废后,立即从JSON.stringify(data)文件中获取数据并将其保存到数据库中。

目前只需将此代码作为示例

.json

2 个答案:

答案 0 :(得分:0)

概念验证,使用

#!/bin/bash

casperjs script.js
[[ -s file.json ]] || exit 1
jq '"UPDATE ROW SET XXX = "+ .[] + " WHERE FOO=BAR;"' file.json | mysql -D DB_name

file.json:

[
    "foo",
    "bar",
    "base" 
]

输出:

jq -r '"UPDATE ROW SET XXX = "+ .[] + " WHERE FOO=BAR;"' file.json

UPDATE ROW SET XXX = foo WHERE FOO=BAR;
UPDATE ROW SET XXX = bar WHERE FOO=BAR;
UPDATE ROW SET XXX = base WHERE FOO=BAR;


检查https://stedolan.github.io/jq/

答案 1 :(得分:0)

我找到的简单解决方案是在evaluate函数内向服务器发出ajax请求:



casper.then(function() {
  details = this.evaluate(function() {
    var elDet = document.getElementsByClassName("job-description-column")[0];
    var detLen = elDet.children[2].children[0].children.length;
    var details = elDet.children[2].children[0].children;
    var linkedData = [];
    for (var i = 0; i < detLen; i++) {
      if (details[i].nodeName == "H3" && details[i].id != "if-this-sounds-like-you,-apply") {
        linkedData.push({
          head: details[i].textContent,
          description: details[i + 1].textContent,
          title: elDet.children[0].children[0].children[0].textContent,
          loc: elDet.children[0].children[0].children[1].textContent,
          date: elDet.children[0].children[0].children[2].textContent
        })
        i++;
      } else {
        linkedData.push({
          head: "No Head",
          description: details[i].textContent,
          title: elDet.children[0].children[0].children[0].textContent,
          loc: elDet.children[0].children[0].children[1].textContent,
          date: elDet.children[0].children[0].children[2].textContent
        })
      }
    }
    var s = JSON.stringify(linkedData);
    console.log(linkedData);
    $.ajax({
      method: "POST",
      url: "http://localhost/fiverr/Crawl%20The%20Jobs/modal_scripts.php",
      data: "add_jobdets=true&job_details=" + s,
      async: false
    })
    return linkedData;
  })
})
&#13;
&#13;
&#13;