所以今年我要进入过渡年,建议我们搜索工作经验,因为它是爱尔兰过渡年计划的一部分,这很棒。
他们为我们提供了专门为过渡年份展示工作经验的网站
然后,他们告诉我们每天在这些网站上查找经验,因为大多数工作经历都是“先到先得的”,这意味着他们会先申请任何人。
所以...作为开发人员,我想到我可能可以通过获取或卷发来获得网站的更改,因此我不必每天检查工作经历的更改,并且仍然知道是否是否出现了新的体验。
好吧,我该怎么做?我决定使用我的可信赖和喜欢的 node.js 和一种称为“ web刮擦”的方法。
网络刮擦是使用机器人从网站提取内容和数据的过程。
因此,首先我创建了一个可以获取CareerSportal的循环。即每1分钟向我展示HTML。
setInterval(function() {
fetch("https://careersportal.ie/workx/student_search.php?s_sector1=8&s_ty=&s_cx_county=6&s_cx_address=", {
"method": "GET",
"headers": {}
})
.then(res => res.text())
.then(text => console.log(text));
}, 60000);
哪个...不起作用。
它一直用HTML代码对我的反应,这似乎是Google统计和Drupal,这是非常不寻常的。在调试并尝试使用诸如phantomjs之类的东西之后,这是用于自动化网页互动的无头浏览器,仍然没有结果。我决定在网站的代码内挖掘它,以防它阻止了请求。
我最终发现整个网页https://careersportal.ie仅用于显示按钮,实际上它使用iframe来显示所有工作经验,从https://cc.careersportal.ie的URL中放置。所以我用那个URL获取了所有内容,并且似乎有效!
现在就获取https://ty.ie/的问题
幸运的是,ty.ie使用了使用WordPress的API。因此,我能够获取该API,以获取具有工作经验的公司。
尽管CareerSportal拥有描述和联系信息的工作安置,但Ty.ie拥有与TY学生申请的公司。
虽然ty.ie api的提取工作只能工作约1小时,这并不理想。我发现那个泰。 IE使用WordPress添加的称为 nonce 的东西。
nonce是WordPress生成的一次性使用安全令牌,以帮助保护URL免受滥用形式。
因此,我必须考虑如何绕过这一点,因为我意识到我需要提供一个nonce,否则API会返回错误。
因此,在测试并研究了网站的代码后。看起来像您输入https://ty.ie/网站时,它确实创建了一个nonce,该nonce存储在一个称为“ um_scripts”的变量中,然后由网站用于访问API。
。使用该信息,我可以使用称为JSDOM的东西从HTML提取该代码,它是一个NPM软件包,像浏览器一样,可以像浏览器一样解析和与组装的HTML进行交互用该非CE代码称自己为API以获取公司!
似乎有效!
现在,我们需要检查页面上是否有任何区别,我可以通过在TXT文件上保存以前的获取响应,然后比较2个响应,以查看是否使用以下代码更改了任何内容
const diff = (diffMe, diffBy) => diffMe.split(diffBy).join('')
const differences = diff(oldpage, newpage)
if (differences == "") {
// No Change
} else {
// Something changed
}}
如果有任何区别,我们要提醒用户。我决定通过使用Discord.js制作一个Discord机器人来做到这一点,该机器人会在特定频道内发生更改的情况下通知我,以与该频道相关联!
!这是所有这些基本工作方式的图:
这是一个非常有趣的项目,因为它遇到了一些有趣的问题,我学到了很多东西,例如如何从网站上获取信息以及我之前从未使用过的新包装,例如JSDOM,以及如何将所有内容连接在一起使用node.js!