gpt4 book ai didi

javascript - 为了使我的代码正常工作,我必须更改 Cheerio 的一些核心功能,如何将其保留在我的模块中?

转载 作者:太空宇宙 更新时间:2023-11-04 00:40:39 26 4
gpt4 key购买 nike

我正在创建一个“网络爬虫”用于学习目的,我必须更改一些 CheerioJS 核心功能才能使我的代码正常工作,发生的情况如下:

index.js:

var request = require('request');
var cheerio = require('cheerio');
module.exports.findWordInURL = function(url, word) {
request(url, function(error, response, body) {
if (!error && response.statusCode == 200) {
$ = cheerio.load(body);
texto = [];
retorno = [];
b = $('body').text().toLowerCase();
c = b.replace(/\s+/g, ' ');
texto = c.split("¬");
for (var i = texto.length - 1; i >= 0; i--) {
if (texto[i].search(word) !== -1) {
retorno.push("+" + texto[i] + "+");
}
}
console.log(retorno);
} else {
console.log(error);
}
});
};

它之所以有效,是因为我更改了“$().text()”函数以满足我的需要:

来自cheerio lib的static.js,看看里面的变化>>> <<<:

/**
* $.text(dom)
*/

exports.text = function(elems) {
if (!elems) return '';

var ret = '',
len = elems.length,
elem;

for (var i = 0; i < len; i++) {
elem = elems[i];
if (elem.type === 'text') ret += elem.data >>>+ "¬"<<<;
else if (elem.children && elem.type !== 'comment') {
ret += exports.text(elem.children);
}
}

return ret;
};

然后,当我在另一个 .js 文件中调用它时,它会按预期工作:

teste.js:

var webCrawler = require('./index');

webCrawler.findWordInURL("http://www.estadao.com.br/","temer");

Node teste.js: enter image description here

我怎样才能让我的模块使用这个修改过的cheerio进入NPM,或者至少如果有人在git上克隆它,当他通过npm install安装它时收到这个修改过的cheerio?

最佳答案

<小时/> 方法一

您可以通过将修改后的cheerio.text函数(不确定它是否是cheerio.text,请检查)放入您自己的index.js本身来完全避免修改原始的cheerio:

index.js

var request = require('request');
var cheerio = require('cheerio');

cheerio.text = function(elems) {
if (!elems) return '';

var ret = '',
len = elems.length,
elem;

for (var i = 0; i < len; i++) {
elem = elems[i];
if (elem.type === 'text') ret += elem.data >>>+ "¬"<<<;
else if (elem.children && elem.type !== 'comment') {
ret += exports.text(elem.children);
}
}

return ret;
};

这样至少我们都npm 安装相同的 Cheerio 并在使用您的应用程序时获得您修改后的功能

<小时/> 方法2

如果您似乎无法执行方法 1,您始终可以将您正在使用的模块 fork 到您的 Github,在本例中 https://github.com/cheeriojs/cheerio

然后你可以随意修改,推送到你的Github,然后在你自己的package.json中:

"cheerio": "github.com/<YOURNAME>/cheerio";

当然,如果您认为您的编辑将有助于改进整个模块,那么您可以在原始模块中提出问题/PR。

关于javascript - 为了使我的代码正常工作,我必须更改 Cheerio 的一些核心功能,如何将其保留在我的模块中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36959654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com