伪造者网络剪贴条件,如果声明

问题描述 投票:0回答:2

废弃表格...每个国家/地区名称都在<a>标记内,但有些不在。当结构改变时,程序崩溃

代码=>

enter image description here

输出=>

enter image description here

我尝试执行以下操作

const countryName = e.children[1].children[0].children[0].data || 'hello world'

不起作用但我也尝试过IfStatement

const countryName = e.children[1].children[0].children[0].data
if (countryName === undefined) {
   countryName = 'hello world'
}

也没有,相同的输出错误。

我知道错误的含义是什么...我知道HTML结构是不同的,但是它不会读取为将countryName变量赋予其值而实施的条件

有什么想法吗?

PD:与cheeriojs相同的输出

javascript node.js web-scraping puppeteer cheerio
2个回答
0
投票

您可能想要类似的东西:

$(e).find('a').first().text() || 'hello world'

您几乎永远都不想求助于患有中风的孩子。


1
投票

您检查undefined太晚了:任何children都可以是undefined,并且用undefined索引此[0]会引发错误。

如果您的Node.js(V8)或转码支持optional chainingnullish coalescing,则可以执行此操作:

const countryName = e?.children?.[1]?.children?.[0]?.children?.[0]?.data ?? 'hello world';

否则,您需要此:

const countryName =
  e &&
  e.children &&
  e.children[1] &&
  e.children[1].children &&
  e.children[1].children[0] &&
  e.children[1].children[0].children &&
  e.children[1].children[0].children[0] &&
  e.children[1].children[0].children[0].data ||
  'hello world';

© www.soinside.com 2019 - 2024. All rights reserved.