Nodejs中cheerio在window和mac结果完全不一样,求解
Nodejs中cheerio在window和mac结果完全不一样,求解
是这样的,心血来潮研究一下 node 爬虫,其中用到了 cheerio 模块,楼主工作用的电脑是 Mac,这个模块用在 Mac 上非常顺手,但是我在我自己的服务器上用,同样的代码,同样的版本,windows server 2008 r2 完全用不了,打印出来的东西不知道是什么鬼东西,求助一下,求大佬解惑
iconv 试一下
ps: 我之前有一次读出来中文汉字全是问号, 后面把 Header 里面的 Host 去掉又能正常读取汉字了…
这么说不太好分析,建议贴出具体问题,执行 log 等
不是编码的问题,是在 Windows server 2012 上出来的结果跟 mac 上结果完全不一样,在 Mac 上可以使用 jquery 语句一层一层往下找,结构很清晰,比如 $(‘body’).find(’.list’) 在 mac 上很完美,在 win 下就可能返回 length:0
服务器返回的 HTML 相同吗…
日志不贴,response 不贴,你让人家怎么帮你?
+1
先确定返回的数据是否一致先?说不定人家屏蔽了 xx 云的 ip 呢。
我能说结构完全不一样,同样一句$(“body”) win 下返回的一大串 json,都不敢一个个往下找,mac 直接就出来了
node 依赖的底层在 win 上本来就和 linux 不一样
应该时和 Mac 不一样
各位大佬,原因找到了,是 URL 的问题,有些网页在 Mac 上的地址和 win 上的地址不一样,在 Mac 上能打开,但是在 win 上就打不开
很多通过 UA 判断的啊
模拟下 UA
在Node.js中使用Cheerio进行网页解析时,如果在Windows和macOS上得到的结果不一致,可能的原因包括环境差异、依赖版本不一致、文件路径处理差异等。以下是一些排查和解决问题的建议:
-
确保依赖版本一致: 确保在两个平台上安装的Cheerio及其依赖库的版本完全一致。可以通过
package.json
锁定版本,并使用npm install
或yarn
安装。{ "dependencies": { "cheerio": "^1.0.0-rc.10" } }
-
检查文件路径和换行符: Windows和macOS的换行符不同(Windows使用
\r\n
,macOS使用\n
),这可能会影响解析结果。确保输入HTML文件的换行符一致,或在代码中统一处理。 -
环境变量和配置: 检查是否有环境变量或配置影响Cheerio的行为,如
NODE_ENV
等。 -
代码示例: 下面是一个简单的Cheerio使用示例,确保在两个平台上运行相同代码:
const cheerio = require('cheerio'); const html = '<html><body><h1>Hello, world!</h1></body></html>'; const $ = cheerio.load(html); console.log($('h1').text()); // 应输出 "Hello, world!"
-
调试和日志: 增加日志输出,比较两个平台上的输入HTML和解析结果,找出差异所在。
如果以上步骤无法解决问题,建议详细比较两个平台上的Node.js版本、Cheerio版本及所有相关依赖,或在GitHub等平台上寻求Cheerio社区的帮助。